第一步,报错 webpack.optimize.CommonsChunkPlugin has been removed, please use config.optimization.splitChunks instead. 百度了一下说是webpack4.0中已经删除CommonsChunkPlugin
第二步,替换CommonsChunkPlugin为SplitChunksPlugin时又报错,没搞懂是啥意思。
项目结构:
输入输出配置:
entry: path.join(__dirname, '../src/index.js'), // 输入:项目主文件(入口文件)
output: { // 输出
filename: 'build.[hash:8].js', // 输出的文件名
path: path.join(__dirname, './dist') // 输出路径
}
生成坏境的配置:
webpack.config.client.js 文件
config = merge(baseConfig,{
entry:{ // 将所用到的类库单独打包
app: path.join(__dirname, '../src/index.js'),
vendor: ['vue']
},
output:{
filename: '[name].[chunkhash:8].js',
},
module:{
rules:[
{
fallback: 'style-loader',
use: [
'css-loader',
{
loader: 'postcss-loader',
options: {
sourceMap: true
}
},
'stylus-loader'
]
}
]
},
plugins:defaultPluins.concat([
new ExtractPlugin('styles.[contentHash:8].css'),
// 将类库文件单独打包出来
new webpack.optimize.SplitChunksPlugin({
name: 'vendor'
}),
// webpack相关的代码单独打包
new webpack.optimize.SplitChunksPlugin({
name: 'runtime'
})
]),
optimization:{
splitChunks: {
cacheGroups: { // 这里开始设置缓存的 chunks
commons: {
chunks: 'initial', // 必须三选一: "initial" | "all" | "async"(默认就是异步)
minSize: 0, // 最小尺寸,默认0,
minChunks: 2, // 最小 chunk ,默认1
maxInitialRequests: 5 // 最大初始化请求书,默认1
},
vendor: {
test: /node_modules/, // 正则规则验证,如果符合就提取 chunk
chunks: 'initial', // 必须三选一: "initial" | "all" | "async"(默认就是异步)
name: 'vendor', // 要缓存的 分隔出来的 chunk 名称
priority: 10, // 缓存组优先级
enforce: true
}
}
},
runtimeChunk: true
}
})
webpack中fallback这个属性,webpack升级后有些属性已经不支持这样写了,推荐一个项目可以看看webpack4配置webpack4配置