如何实现tree-shaking?
是什么
tree-shaking
就是让没有用到的 JS 代码不打包,以减少包的体积。
怎么做
怎么删
- 使用 ES Module 语法(即 ES6 的
import
和export
关键字) - CommonJS 语法无法使用tree-shaking(即
require
和exports
语法) - 引入的时候只引用需要的模块
- 要写
import { cloneDeep } from 'lodash-es'
因为方便 tree-shaking - 不要写
import _ from 'lodash'
因为会导致无法
- 要写
- 使用 ES Module 语法(即 ES6 的
怎么不删:在
package.json
中添加sideEffects
字段,防止某些文件被删除- 比如
import x.js
,而x.js
中只是添加的window.x
属性,那么x.js
就要放到sideEffects
中 - 比如所有被
import
的CSS都要放在sideEffects
里 - 怎么开启:在
webpack.config.js
中将mode
字段,设置production
(开发环境没必要tree-shaking)mode: 'production'
给 webpack 加了非常多优化
- 比如