2016-04-27 118 views
4

我們試圖用Webpack編譯typescript代碼,我們用名稱空間(定義爲內部模塊)替換「module」(現在定義爲外部模塊)。Javascript:Webpack + Typescript +命名空間(內部模塊)

此更改主要是爲了符合typescript的建議,並確保在Karma上運行基於Jasmine的單元測試不需要依賴「require」。 Karma-typescript預處理器已經配置好,測試用例運行良好,不需要「require」。

對命名空間的更改導致我們刪除了require的依賴關係,當它通過tsc進行單元測試和編譯代碼時,它非常適用。但是在使用typecript加載器的Webpack編譯時(我嘗試過ts-loader,Webpack-typescript),輸出包含的僅僅是ts文件的代碼,而不是它的依賴關係。 Tsc已經有一個選項(--outFile)將輸出連接成單個文件,但兩個裝載器都不使用它。

有沒有一種方法(加載器或加載器的配置)來解決依賴關係,並將其捆綁到由Webpack生成的單個輸出js?

+0

今天,正確的方法是用ES6模塊(進口/出口語法)。然後,您可以將TypeScript配置爲生成CommonJS語法。這應該有助於你使用Webpack和Jasmine。 – Paleo

+0

導入/導出語法被轉換爲一個require調用,這會導致我們對karma有requirejs依賴。我試圖避免這種情況,並按照手冊中的更新命名[http://www.typescriptlang.org/docs/handbook/namespaces.html](http://www.typescriptlang.org/docs/手冊/ namespaces.html)。這種理解是否正確? –

回答

1

這一改變主要是爲了在與打字稿的建議相一致,並確保對「規定」,這種依賴性並不需要大隻佬

運行基於茉莉花單元測試

你不需要要做到這一點。你應該使用--module:commonjs無處不在,前端+離開它,因爲它是使用節點運行測試(節點本身理解commonjs)。

我這樣做與ALM https://github.com/alm-tools/alm/

+0

這樣做,我仍然會使用那些不是外部模塊的代碼塊的使用模塊。我們正試圖避免這種情況,並改用名稱空間。 commonJs不會添加對require的依賴嗎? –