前言
你可以将应用程序想象成一棵树,绿色表示实际用到的源码和 library,代表树上活的树叶,灰色表示无用的代码,代表秋天树上枯萎的树叶。为了除去死去的树叶,你必须摇动这棵树,使它们落下。
定义
tree shaking是一个术语,通常用来描述移除JavaScript上下文中未使用的代码(dead-code)。它依赖于 ES2015 模块系统中的静态结构特性,例如 import 和 export。这个术语和概念实际上是兴起于 ES2015 模块打包工具 rollup。
新的 webpack v4 正式版本,扩展了这个检测能力,通过 package.json 的 sideEffects 属性作为标记,向 compiler 提供表明项目中的哪些文件不是 "pure(纯的 ES2015 模块)",由此可以安全地删除文件中未使用的部分。
具体实现
-
≥ES6
-
在
package.json中添加sideEffects:false或[文件路径···]、在module.rules中使用sideEffects -
压缩剔除未使用的代码,如使用
webPackUglifyJSPlugin(通过mode=“production”、CLI命令“webpack build --optimize-minimize”自动添加)、手动添加其他压缩插件,如terser-webpack-plugin、babel-minify-webpack-plugin、webpack-closure-compiler。