【Webpack 性能优化系列(9) - 多进程打包】极大的提升项目打包构建速度

webpack系列文章:

多进程打包

通过thread-loader开启多进程打包

npm install --save-dev thread-loader

使用时,需将此 loader 放置在其他 loader 之前。放置在此 loader 之后的 loader 会在一个独立的 worker 池中运行。

注意:

请仅在耗时的操作中使用此 loader!因为每个 worker 都是一个独立的 node.js 进程,其开销大约为 600ms 左右。

我们一般给bablethread-loader,即给bable开启多进程打包

用法:

  {
    test: /\.js$/,
    exclude: /node_modules/,
    use: [
+      /* 
+        开启多进程打包。 
+        进程启动大概为600ms,进程通信也有开销。
+        只有工作消耗时间比较长,才需要多进程打包
+      */
+      {
+        loader: 'thread-loader',
+        options: {
+ 		   // 产生的 worker 的数量,默认是 (cpu 核心数 - 1)
+          workers: 2 // 进程2个
+        }
+      },
      {
        loader: 'babel-loader',
        options: {
          presets: [
            [
              '@babel/preset-env',
              {
                useBuiltIns: 'usage',
                corejs: { version: 3 },
                targets: {
                  chrome: '60',
                  firefox: '50'
                }
              }
            ]
          ],
          // 开启babel缓存
          // 第二次构建时,会读取之前的缓存
          cacheDirectory: true
        }
      }
    ]
  },

构建项目:
在这里插入图片描述
可以看到此次构建用了5.4s

我们看一下没有启用多进程打包是什么情况:
在这里插入图片描述
正常构建项目时间4.1s,可以看到我们开启多进程打包后构建的更慢了,主要原因是测试的几乎是一个空项目,js代码非常少,如果我们对一个正常的项目使用多进程打包,就可以看到正面的增益效果了。

对于thread-loader多进程打包,用的好的时候可以极大的提升我们的打包速度,用的差的时候,就会导致打包速度更慢

结尾

我是圆圆,如果我的文章对你的学习成长有所帮助,欢迎 点 赞 👍 支持,您的 点 赞 👍 支持是我进行创作和分享的动力!

如果有问题可以留言评论或者私信我,我都会一一解答~笔芯🤞

参考

  • https://webpack.docschina.org/loaders/thread-loader/
  • https://www.bilibili.com/video/BV1e7411j7T5?p=6&spm_id_from=pageDriver
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值