Webpack 多线程压缩为啥没生效?

一宏娟 阅读 8

我用 Webpack 的 TerserPlugin 开启了多线程压缩,但构建时间一点没变快,是不是哪里配错了?

我试过把 parallel 设成 true 甚至设成 4,但 CPU 占用还是只有一核在跑。项目是 React 的,打包体积挺大的,按理说应该能看出来加速效果才对。

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

module.exports = {
  optimization: {
    minimizer: [
      new TerserPlugin({
        parallel: true,
        // 或者写成 parallel: 4
      }),
    ],
  },
};
我来解答 赞 6 收藏
二维码
手机扫码查看
1 条解答
爱学习的可歆
你的配置其实没问题,parallel: true 或者 parallel: 4 都是正确的写法。CPU 还是一核跑大概率是下面这几个原因:

第一个可能:TerserPlugin 版本太老。现在 Webpack 5 已经内置了 TerserPlugin,但如果你手动安装了旧版本,可能 worker 功能不完整。先确认一下版本号,至少要 4.x 以上。

第二个可能:terser 包本身版本低。TerserPlugin 只是调度,真正的压缩是 terser 包在干。确保 terser 也更新到最新:
npm install terser@latest


第三个可能容易被忽略:你的项目文件数量。如果代码量不够大,Webpack 会认为不值得启动 worker 线程,反而用单线程。你可以试试强制指定线程数,同时把每個 chunk 的最小体积调大一点:
new TerserPlugin({
parallel: 4,
terserOptions: {
compress: {
passes: 2
}
}
})


还有个常见坑:如果你用了 cache 选项(Webpack 5 的持久化缓存),第一次构建确实会慢一些,但第二次构建因为有缓存会快很多,这时候你看时间对比可能不准。可以用 webpack --no-cache 强制清掉缓存再测。

最后提醒一下,Windows 平台下多线程有时会抽风,如果你是 Windows 系统,可以试试把 parallel 改成 2 或者直接用单线程对比一下,看看是不是平台问题。

你可以先跑一下 npm list terser-webpack-plugin terser 看看版本,然后升级到最新试试。
点赞
2026-03-16 20:01