这是我的 webpack 3 配置。
function isVendorJS(module) {
if (module.resource && (/^.*\.(css|scss)$/).test(module.resource)) return false
return module.context && module.context.includes('node_modules')
}
const plugins = [
new webpack.optimize.CommonsChunkPlugin({
name: 'view-vendor',
chunks: ['view'],
minChunks: isVendorJS
}),
new webpack.optimize.CommonsChunkPlugin({
name: 'config-vendor',
chunks: ['configuration'],
minChunks: isVendorJS
}),
new webpack.optimize.CommonsChunkPlugin({
name: 'common-vendor',
chunks: ['config-vendor', 'view-vendor'],
minChunks: 2
})
]
return {
entry: {
view: 'some path',
configuration: 'some path'
}
}
它的目标是从 2 个入口点获得 5 个文件:
- 带有它使用的本地模块的入口文件 A
- 带有它使用的本地模块的入口文件 B
- 仅在 A 中使用的供应商文件
- 仅在 B 中使用的供应商文件
- 两者都使用的供应商文件
我还需要这些文件具有固定的名称,以便我可以将它们导入我的 HTML。
有一个简单的配置
splitChunks: {
chunks: 'all'
}
几乎可以满足我的需要,除了 a)它将我的本地模块包含在“仅 A”和“仅 B”块中 b)它为它们创建动态名称
我搜索了几个小时,但找不到解决方案,也无法理解现在整个 chunks majic 是如何工作的,所以我寻求帮助。