《玩转Webpack》学习笔记 Day13 之第五章51-58讲

114 阅读2分钟

51讲 多进程、多实例构建

资源并行解析可选方案

image.png

使用HappyPack 解析资源

原理: 每次webpack解析一个模块,HappyPack会将它及它的依赖分配给worker线程中

image.png

使用thread-loader解析资源(webpack4推荐使用这个)

image.png

52讲 多进程并行压缩代码

多进程、多实例:并行压缩

方法一: 使用parallel-uglify-plugin插件

image.png

方法二: 使用uglifyjs-webpack-plugin开启parallel参数

image.png

方法三: 使用terser-webpack-plugin开启parallel参数

image.png

53讲 进一步分包: 预编译资源模块

分包: 设置Externals

思路: 将react、react-dom基础包通过cdn引入,不打入bundle中

方法: 使用html-webpack-externals-plugin

image.png

缺点:一个基础库必须指定一个cdn,生成很多

预编译资源模块

思路:将react、react-dom、redux、react-redux基础包和业务基础包打包成一个文件 方法:使用DLLPlugin进行分包,DllReferencePlugin对manifest.json引用

image.png

image.png

54讲 充分利用缓存提升第二次构建速度

缓存

目的: 提升二次构建速度

缓存思路:

  • babel-loader开启缓存
  • terser-webpack-plugin开启缓存
  • 使用cache-loader或者hard-source-webpack-pligin

55讲 缩小构建目标

image.png

减少文件搜索范围

image.png

56讲 使用Tree Shaking擦除无用的JavaScript和CSS

tree shaking 摇树优化

image.png

无用的css如何删除

image.png

在webpack中如何使用PurifyCSS

image.png

57讲 使用webpack进行图片压缩(体积大小优化)

image.png

Imagemin的优点分析

有很多定制选项
可以引入更多第三方优化插件,例如pngquant
可以处理多种图片格式

Imagemin的压缩原理

image.png

58讲 使用动态Polyfill服务(体积大小优化)

image.png

例子:

image.png

image.png

image.png

image.png

image.png

参考

程柳峰 《极客时间》 《玩转webpack》第五章51-58讲