覆盖 Webpack 4.25.1 在生产模式下对 Uglify 的使用

Override Webpack 4.25.1's use of Uglify in production mode

根据文档,当module.exports = { mode: 'production' }时,它默认使用UglifyJS:

https://webpack.js.org/concepts/mode/#mode-production

据我了解,此库已被废弃,"full of bugs"。推荐使用terser代替:

https://github.com/terser-js/terser

如何覆盖此特定插件的默认使用 mode: 'production'?将 terser 添加到 plugins: [] 就足够了吗?

好的,在文档中找到了答案:

optimization.minimzer

Allows you to override the default minimizer by providing a different one or more customized UglifyjsWebpackPlugin instances.

const UglifyJsPlugin = require('uglifyjs-webpack-plugin');

module.exports = {
  //...
  optimization: {
    minimizer: [
      new UglifyJsPlugin({ /* your config */ })
    ]
  }
};

您只需将所有 UglifyJsPlugin 内容替换为 terser:

const TerserPlugin = require('terser-webpack-plugin');

module.exports = {
  //...
  optimization: {
    minimizer: [new TerserPlugin()]
  }
};

https://webpack.js.org/configuration/optimization/#optimization-minimizer