如何实现 tree-shaking

110 阅读1分钟

是个啥

tree-shaking 就是在打包时忽略没有用到的 JS 代码,以减小包的体积

怎么做

根据文档:

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