是个啥
tree-shaking 就是在打包时忽略没有用到的 JS 代码,以减小包的体积
怎么做
根据文档:
- 怎么删
- 使用 ES Modules 语法(即 ES6 的 import 和 export 关键字)
- CommonJS 语法无法 tree-sahking(即 require 和 exports 语法)
- i. 给 bable-loader 添加
modules: false选项,禁止将模块变成CommonJS
- i. 给 bable-loader 添加
- 只引入需要的模块
- 要写
import { cloneDeep } from 'loadsh-es'方便 tree-shaking - 不要写
import _ from 'lodash',因为会导致无法 tree-shaking 无用模块
- 要写
- 怎么不删:在 package.json 中配置 sideEffects,防止某些文件被删掉
- 例如,import 了 x.js,而 x.js 知识添加了 window.x 属性,那么 x.js 就要放到 sideEffects 里
- 例如,所有被 import 的 CSS 都要放到 sideEffects 里
- 怎么开启 tree-shaking:在 webpack config 中将 mode 设置为 production (开发环境没必要 tree-shaking)