所以code splitting是创建不同包的技术 - 所以app,vendor等......
我知道我想要在我的vendor
捆绑包中,但只能按惯例...
任何
import x from 'name';
import 'name';
这些必须在vendor
,因为(我认为它们)明显来自node_modules
。
但是,我只看到明确说明这一点的例子。
有没有办法使用惯例?
如果没有,我可以构建一个插件来执行此操作(此插件可以进入package.json
的依赖项部分吗?)
答案 0 :(得分:3)
你可以做的是:
const pkg = require('./package.json');
并在您的配置中:
{
entry: {
vendor: Object.keys(pkg.dependencies) // use node_module dependencies
},
plugins: [
new webpack.optimize.CommonsChunkPlugin({
name: "vendor"
})
]
}
编辑:
似乎有更好的方法来做到这一点。可以在CommonsChunkPlugin插件中使用minChunks
属性。你可以在那里传递一个函数:
plugins: [
new webpack.optimize.CommonsChunkPlugin({
name: "vendor",
minChunks: ({ resource }) => {
return resource && resource.match(/\.js$/) && resource.indexOf('node_modules') >= 0;
}
})
]
通过这样做,您不需要依赖package.json列表,而webpack将只考虑项目中使用的依赖项。整齐。