老版webpack中集成的plugin为 CommonsChunkPlugin ,但是在webpack4b版本就废弃了,从webpack v4开始,CommonsChunkPlugin
删除了,而改为optimization.splitChunks
。
module.exports = {
optimization: {
splitChunks: {
cacheGroups: {
vendor: {
name: "vendor",
test: /[\\/]node_modules[\\/]/,
chunks: "all",
priority: 10 // 优先级
},
common: {
name: "common",
test: /[\\/]src[\\/]/,
minSize: 1024,
chunks: "all",
priority: 5
}
}
}
},
};
这里我配置了两个缓存组,即 vendor
和 common
vendor
: 抽取来自node_modules
文件夹下的第三方代码,优先级权重为10common
: 抽取来自src
文件夹下的代码,优先级权重为5vendor
比common
的优先级权重高,所以先提取vendor
,再提取common
在入口文件引用的第三方文件(这里我用了
lodash
来测试)被打包到vendor.js
- 在入口文件引用到的公共文件(这里我用了自己写的util.js)被打包到
common.js
注意
这里还需要注意的是,公共引用的css文件,本来我是用了extract-text-webpack-plugin
插件抽取到单独的文件,因为css文件也有公共引用,所以也被 SplitChunksPlugin
插件抽取成公共模块打包到了common.css
文件_