2017-06-17 90 views
1

我正在使用TypeScript編寫基於JavaScript的測試。將所有TypeScript文件轉儲到相對相鄰的目錄

我想要一個單一的tsc --watch命令,以便能夠正確處理我們所有文件的傳輸,這是關鍵部分。我認爲使用多個tsconfig.json文件是這裏的方法。

我有這樣的結構:

/tests 
    /e2e 
    tsconfig.json 
    /src 
    /target 
    /unit 
    tsconfig.json 
    /src 
    /target 

我想把打字稿文件在src目錄,並把它們transpile到目標目錄。

我的問題是 - 如果你有一個bash腳本可以將文件列表作爲輸入,那麼你如何將這些文件轉換成它們各自的目標目錄?

例如,輸入文件:

/home/you/projects/x/test/e2e/src/a.ts 
/home/you/projects/x/test/e2e/src/b.ts 
/home/you/projects/x/test/e2e/src/c.ts 
/home/you/projects/x/test/unit/src/foo.ts 
/home/you/projects/x/test/unit/src/bar.ts 
/home/you/projects/x/test/unit/src/baz.ts 

所需的輸出文件:

/home/you/projects/x/test/e2e/target/a.js 
/home/you/projects/x/test/e2e/target/b.js 
/home/you/projects/x/test/e2e/target/c.js 
/home/you/projects/x/test/unit/target/foo.js 
/home/you/projects/x/test/unit/target/bar.js 
/home/you/projects/x/test/unit/target/baz.js 

有沒有爲tsc命令把這些文件和transpile他們都在一個一個的方式一行命令到它們各自的目標目錄?

我認爲這可能非常棘手。我可能不得不按照他們的dirname將他們分組,並分別將每個小組分組。這會更困難。

+0

你是如何處理它們的? – 123

+0

有一個tsc的目標目錄選項,只需要這樣做,你可以在tsconfig.json中設置它: -/ – toskv

+0

在tsconfig.json中的outDir是你正在尋找的人 –

回答

1

我不認爲你可以得到原生tsc --watch來支持該項目結構,但你可以使用gulpgulp-typescript。它們允許您在幾個不同的TypeScript項目上同時設置手錶,每個項目都有自己的tsconfig.json

如果這些子目錄之間存在依賴關係,請考慮使用lerna。否則,您可能會在目標目錄中出現令人驚訝的佈局。一個額外的目錄是最初的問題,讓我看着這個。使用lerna,您將設置單獨的package.json記錄依賴關係的文件。然後lerna bootstrap可以負責設置符號鏈接來解析引用。

隨着lerna,你可能要標記一些的package.json文件爲"private": true,如果他們不打算髮布到NPM。

+0

謝謝,我可能最終會寫一些基本上爲每個tsconfig.json文件產生一個「tsc -w」的東西。 –

0

我創建了一個工具來做到這一點:

github.com/ORESoftware/tsc-multi-watch

它會搜索你的項目/tsconfig.*\.json/文件,並生成一個TSC -w過程每一個。

不僅如此,它還解決了tsc - watch的另一個缺陷。 tsc --watch無法解釋添加到項目中的新文件。

.ts文件添加到項目中時,tsc-multi-watch將重新啓動正確的tsc -w過程。