2015-12-26 10 views
29

मैं टीएस 1.7 का उपयोग कर रहा हूं और मैं अपनी परियोजना को एक बड़ी फ़ाइल में संकलित करने की कोशिश कर रहा हूं जिसे मैं अपनी एचटीएमएल फाइल में शामिल करने में सक्षम हूं।टाइपस्क्रिप्ट एक फ़ाइल में संकलित

मेरे परियोजना संरचना इस तरह दिखता है:

-build // Build directory 
-src // source root 
--main.ts // my "Main" file that uses the imports my outer files 
--subDirectories with more ts files. 
-package.json 
-tsconfig.json 

मेरी tsconfig फ़ाइल है:

{ 
    "compilerOptions": { 
    "module":"amd", 
    "target": "ES5", 
    "removeComments": true, 
    "preserveConstEnums": true, 
    "outDir": "./build", 
    "outFile":"./build/build.js", 
    "sourceRoot": "./src/", 
    "rootDir": "./src/", 
    "sourceMap": true 
    } 
} 

मैं एक बड़ी फ़ाइल से संकलित होने की build.js फ़ाइल उम्मीद जब मैं अपने प्रोजेक्ट का निर्माण मेरी स्रोत। लेकिन ths build.js फ़ाइल खाली है और मुझे मेरी सभी फाइलें जेएस फाइलों को संकलित करती हैं।

मेरी टीएस से प्रत्येक फ़ाइलें इस

import {blabla} from "../../bla/blas"; 

export default class bar implements someThing { 
    private variable : string; 
} 

की तरह एक सा मैं गलत क्या कर रहा हूँ देखने के लिए?

उत्तर

29

यह टाइपस्ट्रिप 1.8 में लागू किया जाएगा। उस संस्करण के साथ outfile विकल्प काम करता है जब मॉड्यूलAMD या प्रणाली है।

इस समय सुविधा टाइपस्क्रिप्ट के विकास संस्करण में उपलब्ध है।

$ npm install -g [email protected] 

पिछले संस्करणों भले ही यह स्पष्ट मॉड्यूल नहीं है और outfile विकल्प एक साथ काम नहीं कर सकता के लिए: कि रन स्थापित करने के लिए।

आप अधिक जानकारी के लिए this समस्या देख सकते हैं।


आप उत्पादन के लिए आप tsconfig.json में मॉड्यूल विकल्प का उपयोग नहीं कर सकते हैं 1.8 की तुलना में कम संस्करणों के साथ एक एकल फाइल चाहते हैं। इसके बजाय आपको मॉड्यूल कीवर्ड का उपयोग करके नामस्थान बनाना होगा।

आपका tsconfig.json फ़ाइल इस तरह दिखना चाहिए:

{ 
    "compilerOptions": { 
    "target": "ES5", 
    "removeComments": true, 
    "preserveConstEnums": true, 
    "outFile": "./build/build.js", 
    "sourceRoot": "./src/", 
    "rootDir": "./src/", 
    "sourceMap": true 
    } 
} 

इसके अलावा अपने टीएस फ़ाइलें इस तरह दिखना चाहिए: आयात कथन का उपयोग

module SomeModule { 
    export class RaceTrack { 
    constructor(private host: Element) { 
     host.appendChild(document.createElement("canvas")); 
    } 
    } 
} 

और के बजाय आपको नामस्थान द्वारा आयात को संदर्भित करना होगा।

window.addEventListener("load", (ev: Event) => { 
    var racetrack = new SomeModule.RaceTrack(document.getElementById("content")); 
}); 
+0

मुद्दा यह है कि आपके कहे अनुसार हल किया जाना प्रतीत होता है, यह भी https://github.com/Microsoft/TypeScript/wiki/Compiler-Options पता चलता है कि के रूप में के साथ प्रयोग की जाने वाली --outFile झंडा - मॉड्यूल ध्वज। –

+0

वास्तव में, लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है। :(शायद गिटूब पर इसका कोई मुद्दा बनाओ? – toskv

+0

बीटीडब्ल्यू, जीथ्यूब पर मुद्दों के संकल्प कोड आधार पर किसी भी वास्तविक परिवर्तन को इंगित नहीं करते हैं, वे हमेशा डिफ़ॉल्ट व्यवहार के साथ बंद होते हैं। – toskv

संबंधित मुद्दे