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