2015-12-08 22 views
3

我有一個名爲test.ts一個簡單的Hello World文件具有以下內容:TSC了創建空OUTFILE

export class Hello { 
    constructor() { 
    console.log("hello world!"); 
    } 
} 

當我運行命令tsc test.ts --module amd --out bla.js,一個test.js文件與正確的內容創建,但空bla.js文件也被創建。

我預計test.ts的內容,以及任何依賴關係編譯爲bla.js。什麼導致了這種行爲?

+0

--out'可以在長期的傷害:https://github.com/TypeStrong/atom-typescript/blob/master/docs/ out.md – basarat

回答

4

--out參數告訴tsc

串聯併發射輸出到單個文件中。

...但您正在定義模塊。模塊並不意味着在連接的文件中。因此tsc正在生成包含您的test模塊的所有非模塊代碼(您沒有,因此bla.js爲空)和模塊文件(test.js)的連接文件。

您可以通過在命令行中添加第二個.ts文件來證明這一點,其中一個不定義定義模塊。您可以在bla.js中找到該代碼的轉碼版本,並在test.js中找到您的模塊。如果添加另一個定義第二個模塊的.ts文件,則可以在另一個.js文件中找到它,其文件名爲.ts

因此,舉例來說,假設你有

  • Module1.ts定義模塊
  • Module2.ts定義另一個模塊
  • Stuff.ts定義非模塊的東西
  • MoreStuff.ts定義更多的非模塊的東西

...你沒有這樣的:

 
tsc Module1.ts Module2.ts Stuff.ts MoreStuff.ts --out combined.js --module amd 

你會結束:

  • Module1.js包含transpiled的JavaScript Module1
  • Module2.js包含Module2的傳輸JavaScript。
  • combined.jsStuff.ts使用`的transpiled JavaScript和MoreStuff.ts
+1

謝謝,這解決了這個問題。這意味着我必須用'/// '引用其他人,但是解決了這個問題。 –

+2

@JamesMonger:...或者不要將它們定義爲模塊,因爲您將所有內容組合在一起。 –

+1

因此,如果我們使用模塊,是否可以單獨使用'tsc'將文件連接成一個文件?或者,我們是否必須使用[Webpack](https://webpack.github.io/)之類的東西? – rinogo