Webpack 打包后的 JS 文件压缩没生效是怎么回事?
我用 Webpack 5 搭了个项目,明明配置了 TerserPlugin 做 JS 压缩,但打包出来的 main.js 还是格式化状态,注释和空格都在,体积特别大。开发环境没问题,但 production 模式下也没压缩成功。
我检查了 mode 是 ‘production’,也手动加了 TerserPlugin,但还是不行。是不是哪里配置冲突了?这是我的部分配置:
const TerserPlugin = require('terser-webpack-plugin');
module.exports = {
mode: 'production',
optimization: {
minimize: true,
minimizer: [new TerserPlugin()],
},
};
TerserPlugin,看起来没问题。但是有时候一些细节配置可能会导致压缩不生效。我的做法是先确认一下你的 webpack 配置文件是不是被其他地方覆盖了。确保你这个配置文件确实是生效的那个。
然后可以检查一下是否有其他插件或者 loader 在生产模式下可能干扰了压缩过程。虽然不太常见,但有时候确实会发生。
最后,你可以尝试在
TerserPlugin的配置里加上extractComments: false,确保它不会提取注释。虽然这不是压缩不生效的原因,但有时候注释会导致文件看起来像是没有压缩。修改后的配置可以试试这样:
希望这样能解决问题,如果还不行,可以再检查一下控制台输出的信息,有时候会有线索提示哪里出了问题。