2016-07-28 51 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;