2016-07-28 103 views
0

我正在構建一個包含多個項目的大型應用程序,所以我想將一些Angular2組件放在一個額外的模塊中,並在所有模塊之間共享。使用Angular2和Webpackage創建節點包

因爲我在我的項目中使用了webpack,所以在節點模塊中使用adavantages會很好,但是生成的輸出並不是真正可用的。

我試圖使用webpack的原因是要利用webpack提供的加載器。我想在不同的文件中分離模板和樣式。

有沒有辦法使用webpack來呈現我的angular2組件的方式,我可以將它們用作不同項目中的node_module?

回答

0

默認情況下,Webpack會爲瀏覽器輸出一個包。如果您希望自己的代碼在其他項目中可用,則可以在Webpack配置中使用output.libraryoutput.libraryTarget。舉個例子:

output: { 
    library: 'MyComponentName', // Your component/library name 
    libraryTarget: 'umd', // Or 'commonjs2', 'var', ... 
} 

這將導致你可以在瀏覽器或與支持AMD或CommonJS2(類似的WebPack,Browserify,RequireJS,...)任何模塊系統中導入一個包。

有關這兩個選項的更多信息,請參見in the Webpack documentation

獎勵:

如果不設置output.library選項,你的主包的所有出口的財產將用於出口。這僅對不使用AMD或CommonJS的捆綁器/瀏覽器有效。例如:

entrypoint.js:

module.exports = { 
    firstExport: 1, 
    secondExport: 2, 
}; 

隨着output.library設置爲MyLibrary,這將在瀏覽器中發生:

var MyLibrary = { firstExport: 1, secondExport: 2 }; 

沒有output.library,它看起來像這樣:

var firstExport = 1; 
var secondExport = 2;