踩坑记

该篇文章记录踩过的坑

  1. 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
        }
    })
  ]
}

你可能感兴趣的:(踩坑记)