webpack学习笔记(12)-高级篇(3)-减小代码体积篇
Tree Shaking
为什么需要Tree Shaking
开发时我们定义了一些工具函数库,或者引用第三方工具函数库或组件库。例如
elementUI
等….如果没有特殊处理的话我们打包时会引入整个库,但是实际上可能我们可能只用上极小部分的功能。
这样将整个库都打包进来,体积就太大了。
Tree Shaking
是什么?
Tree Shaking
是一个术语(webpack
中的术语),通常用于描述移除 JavaScript 中的没有使用上的代码。注意:它依赖
ES Module
。
如何使用Tree Shaking
Webpack
已经默认开启了这个功能,无需其他配置。
Babel
处理重复的辅助代码
为什么?
Babel
为编译的每个文件都插入了辅助代码,使代码体积过大!Babel
对一些公共方法使用了非常小的辅助代码,比如_extend
。默认情况下会被添加到每一个需要它的文件中。你可以将这些辅助代码作为一个独立模块,来避免重复引入。
是什么
@babel/plugin-transform-runtime
: 禁用了Babel
自动对每个文件的runtime
注入,而是引入@babel/plugin-transform-runtime
并且使所有辅助代码从这里引用。
怎么用
1. 下载包
npm i @babel/plugin-transform-runtime -D |
2. 配置
// 使用的是commonjs 的语法格式[node.js] |
3. 图片压缩(Image Minimizer
)
为什么需要图片压缩?
开发如果项目中引用了较多图片(本地图片),那么图片体积会比较大,将来请求速度比较慢。
我们可以对图片进行压缩,减少图片体积。
注意:如果项目中图片都是在线链接,那么就不需要了。本地项目静态图片才需要进行压缩。
图片压缩是什么?
image-minimizer-webpack-plugin
: 用来压缩图片的插件
使用方法:
1. 下载包
npm i image-minimizer-webpack-plugin imagemin -D |
- 还有剩下包需要下载,有两种模式:
2. 无损压缩
npm install imagemin-gifsicle imagemin-jpegtran imagemin-optipng imagemin-svgo -D |
3. 有损压缩
npm install imagemin-gifsicle imagemin-mozjpeg imagemin-pngquant imagemin-svgo -D |
4. 配置webpack.prod.js
(一般是生产模式,以无损压缩为例)
- 查看ImageMinimizerWebpackPlugin官方文档实施其他配置项的配置
// 使用的是commonjs 的语法格式[node.js] |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0许可协议。转载请注明来自 肥林の仓库