tree-shaking 是在打包的时候让没有用到的 JS 代码不打包,以减小包的体积
    官方文档中有详细说明如何实现tree-shaking
    总结如下:

    1. 怎么删
      1. 只能使用 ES Modules 语法(即 ES6 的 import 和 export )
      2. CommonJS 语法无法 tree-shaking ( 即 require 和 exports )
        1. 可给 babel-loader 添加 modules: false 选项,阻止 CommonJS
      3. 引入的时候只引入需要的模块,不能引入所有,例如
        1. 要写 import { cloneDeep } from 'lodash-es' 因为方便 tree-shaking
        2. 不要写 import _ from 'lodash' 因为会导致无法 tree-shaking
    2. 怎么防止某些文件被删?在 package.json 中配置 sideEffects,添加要排除的文件路径
      1. 例如我 import 了 x.js, 而 x.js 只是添加了 window.x 属性,那么 x.js 就要放到 sideEffects 里
      2. 例如所有被 import 的 CSS 都要放在 sideEffects
    3. 怎么开启 tree-shaking ?
      1. 在 webpack confg 中将 mode 设置为 production (开发环境没必要 tree-shaking)