一次优化webpack打包的经历

本文记录了一次优化webpack打包过程的经历,从480s降至40s。通过dll打包、happypack和ExtractTextPlugin优化loader,最后在解决addtional asset processing停滞问题时,尝试了GitHub上的优化方法,成功大幅缩短了打包时间。
摘要由CSDN通过智能技术生成

起因

如题,有个项目每次打包时间均有480s左右,之前忙于业务开发,无暇修复,小组成员深受其害。今天,分配了时间着手解决一下。

过程

打开收藏夹的一篇webpack优化教程,按步进行优化。
依次使用了

  • dll打包第三方npm包
  • happypack优化loader

happypack的readme更新不够及时,在找 ExtractTextPlugin 使用方法着实费了功夫
其中happypack 和 ExtractTextPlugin 抽取css共同使用的方法请参考这里

挫折

经历上步优化,打包时间稳定在了410s左右…
好像也没什么区别

转机

灵机一动,死马当活马医,将webpack打包时停滞时间最长的提示 addtional asset processing 直接googe,然后将查到的所有网页的解决方案都试一试,然后在尝试某一篇github上发现的一个优化方法时

webpack提供的UglifyJS插件由于采用单线程压缩,速度很慢 ,
webpack-parallel-uglify-plugin插件可以并行运行UglifyJS插件,这可以有效减少构建时间,当然,该插件应用于生产环境而非开发环境,配置如下:

var ParallelUglifyPlugin = require('webpack-parallel-uglify-plugin');
new ParallelUglifyPlugin({
   cacheDir: '.cache/',
   uglifyJS:{
     output: {
       comments: false
     },
     compress: {
       warnings: false
     }
   }
 })

打包时间瞬间就降低到40s!!!!!感谢万能的谷歌!!

总结

打包配置最终如下

//--webpack.config.js
// 一些通用的库
var webpack = require('webpack');
var path = require('path');
var url = require('url');
var webpackHotDevServer = require('webpack-dev-server');

// 用到的插件
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var WebpackBrowserPlugin = require('webpack-browser-plugin');
var HappyPack = require('happypack');//多线程loader 加快编译速度
var os = require('os');
var happyThreadPool = HappyPack.ThreadPool({ size: os.cpus().length });
var ParallelUglifyPlugin = require('webpack-parallel-uglify-p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值