webpack
webpack 性能优化
webpack 的优化瓶颈,主要是两个方面
- webpack 的构建过程太长
- webpack 打包的结果体积太大
构建过程
对于构建时间,可以采用 speed-measuer-webpack-plugin 插件进行分析
多线程打包
可以使用 happypack 进行多线程打包,设置 js 或者 css 打包过程,使用 happypack 的 loader 进行打包
如果项目比较小不建议使用,反而会降低打包速度
happypack 的基本原理是将打包任务分配到多个子进程中去并行处理,子进程处理完成后会把结果发送到主进程中,从而减少构建时间。
1 | rules: [ |
使用 tread-load webpack4 之后 官方推出的
thread-loader 会将您的 loader 放置在一个 worker 池里面运行,以达到多线程构建
1 | rules: [ |
压缩
并行压缩主要有三个方案:
- parallel-uglify-plugi
- uglifyjs-webpack-plugin 开启 parallel 参数
- terser-webpack-plugin 开启 parallel 参数 (推荐使用这个,支持 ES6 语法压缩)
预编译
可以使用预编译将提前引入的三方库进新打包处理,而不是每次都进行打包。
DllPlugin 结合 DllRefrencePlugin 插件的运用,对将要产出的 bundle 文件进行拆解打包,可以很彻底地加快 webpack 的打包速度
DllPlugin:负责抽离第三方库,形成第三方动态库dll
DllReferencePlugin:负责引用第三方库
打包体积
Tree-Shaking 删除冗余代码
压缩 HTML/JS/CSS
- HTML压缩: html-webpack-plugin —— 删除双引号和折叠为一行。
- CSS
- 压缩: mini-css-extract-plugin
- 去除无用的 css: purgecss-webpack-plugin