该篇文章记录踩过的坑
-
uglifyjs-webpack-plugin压缩代码报punc (()错误
网上查资料,说是uglifyjs不支持es6,由于是node_modules里面的包代码在babel没有编译,uglifyjs也没有编译,所以报错。
我把.babelrc文件里面你的presets:["es2015"],并且把stage-2改为stage-1,仍然没有解决该问题。
后来查到uglifyjs@3支持es6编译,所以在uglifyOptions里面设置了ecma:7,并使用了bababili,但是问题依然存在。
后来在uglifyjs-webpack-plugin的issues里面查到很多人提出相应的bug,但是问题依然没有解决。将uflifyjs-webpack-plugin从2.1.1降到2.1.0版本也没有解决问题。
最终通过两种方法解决了该问题:
- 去掉uglifyjs-webpackl-plugin相关的配置(webpack4中mode设置为product后,webpack会自动压缩优化代码,无需手动配置压缩)
optimization: {
//...其他配置
minimizer: [
new uglifyjsPlugin({
uglifyOptions: {
ecma: 6
}
})
]
}
改为:
optimization: {
//...其他配置
}
- 用terser-webpack-plugin插件替代uglifyjs-webpack-plugin来压缩js
optimization: {
// ...其他配置
minimizer: [
new terserPlugin({
terserOptions: {
ecma: 6,
compress: true
}
})
]
}
网友评论