2016-02-12 108 views
8

我正在开发多个插件到加载这些插件作为AMD模块(带有requirejs)的系统。插件被编写为ES6模块并且与webpack(output.libraryTarget ='amd')打包在一起。一切工作如预期到目前为止。使用webpack和CommonsChunkPlugin生成AMD模块

但插件共享相当多的通用代码捆绑到每个条目。我尝试使用CommonsChunkPlugin webpack插件,但初始块包含的代码不是AMD模块。然而,在普通卡盘上继续的其他入口点仍然正确生成。另外documentation表示,在一个页面上有多个初始块(使用JSONp运行时)是不好的 - 另一个插件作者可能会使用相同的方法。

有没有办法以AMD兼容的方式优化这个用例? 在我看来,CommonsChunkPlugin中的一个错误是,初始条目不是AMD(但它的代码仍然不安全,无法在plugin env中加载)......有没有我缺少的配置?

+1

同样的问题。似乎无论出于何种原因而生成一个amd库都是不兼容的。 –

回答

1

我不太确定是否正确理解你。但是,如果你想建立自己的包作为AMD模块,比你必须配置它作为一个library:这里

... 
output: { 
    ... 
    library: true, 
    libraryTarget: 'umd' 
}, 
+0

因此,您可能需要根据您的导出方式配置libraryTarget参数:http://webpack.github.io/docs/configuration.html#output-librarytarget – Kreozot

+0

工作正常。但是我想使用[CommonsChunkPlugin](https://webpack.github.io/docs/list-of-plugins.html#commonschunkplugin),并且常见块的输出不是AMD。 – ahz

+0

为什么不使用多个入口点? – Kreozot