Tree-shaking 字面意思就是 摇晃树, 其实就是去除那些引用的但却没有使用的代码。
Tree-shaking 概念最先由 Rollup.js 提出,后来在 webpack2 中被引入进来,可是这个这一特性可以被支持得益于 ES6 modules 的静态特性。ES6 的模块声明相比于传统 CommonJS 的同步 require 有着本质区别。这种 modules 设计保证了依赖关系是提早肯定的,使得静态分析成为了可能,与运行时无关。
而且 webpack 中并无直接对 tree shaking 的配置,须要借助 uglifyjs-webpack-plugin
“modules”: false 的含义是关闭 Babel 的模块转换功能,保留本来的 ES6 模块化语法。webpack