10.怎么提高 Webpack 编译速度
wabicai
# 10.怎么提高 Webpack 编译速度
https://juejin.cn/post/6844904094281236487#heading-9
- 多进程/多实例构建:HappyPack(不维护了)、thread-loader
- 压缩代码
- 多进程并行压缩
- webpack-paralle-uglify-plugin
- uglifyjs-webpack-plugin 开启 parallel 参数 (不支持 ES6)
- terser-webpack-plugin 开启 parallel 参数
- 通过 mini-css-extract-plugin 提取 Chunk 中的 CSS 代码到单独文件,通过 css-loader 的 minimize 选项开启 cssnano 压缩 CSS。
- 多进程并行压缩
- 图片压缩
- image-webpack-loader
- Tree shaking
- 树摇,检测没有用到的代码
- 使用 PurifyCSS(不在维护) 或者 uncss 去除无用 CSS 代码
- purgecss-webpack-plugin 和 mini-css-extract-plugin 配合使用(建议)
- 充分利用缓存提升二次构建速度:
- babel-loader 开启缓存
- terser-webpack-plugin 开启缓存
- DLL
- 使用 DllPlugin 进行分包,使用 DllReferencePlugin(索引链接) 对 manifest.json 引用,让一些基本不会改动的代码先打包成静态资源,避免反复编译浪费时
- HashedModuleIdsPlugin 可以解决模块数字 id 问题
- Scope hoisting: 将代码放在一个函数作用域,减低开阔函数作用域带来的内存消耗