一、tree shaking(摇树优化)

https://webpack.js.org/guides/tree-shaking/#root

概念:1个模块可能有多个⽅法,只要其中的某个方法使⽤到了,则整个⽂件都会被打到 bundle 里面去,tree shaking 就是只把⽤到的方法打入 bundle ,没⽤到的方法会在uglify阶段被擦除掉。

使⽤:
webpack默认⽀持,在.babelrc里设置modules: false即可
production mode的情况下默认开启
要求:必须是 ES6 的语法,CJS 的方式不支持

  1. //dev环境下
  2. mode: 'development',
  3. optimization: {
  4. // 打包结果只打包引用的代码
  5. usedExports: true,
  6. // 尽可能合并每一个模块到一个函数中
  7. concatenateModules: true,
  8. // 压缩打包的结果
  9. minimize: true
  10. },

Tree-shaking 实现的前提是 ES Modules,也就是说:最终交给 Webpack 打包的代码,必须是使用 ES Modules 的方式来组织的模块化。