简单地说,摇树意味着从包中删除无法访问的代码(也称为死代码)
“你可以把你的应用想象成一棵树。您实际使用的源代码和库代表了树的绿色、有生命的叶子。死代码代表秋天消耗的树的棕色枯叶。为了摆脱枯叶,你必须摇晃树,让它们倒下。”
“You can imagine your application as a tree. The source code and libraries you actually use represent the green, living leaves of the tree. Dead code represents the brown, dead leaves of the tree that are consumed by autumn. In order to get rid of the dead leaves, you have to shake the tree, causing them to fall.”
这个词最早是由Rollup 团队在前端社区普及的。但是所有动态语言的作者从很早以前就一直在努力解决这个问题。摇树算法的想法至少可以追溯到 1990 年代初期。
在 JavaScript 领域,自从 ES2015 中的 ECMAScript 模块 (ESM) 规范(以前称为 ES6)以来,tree-shaking 已经成为可能。从那时起,大多数打包器默认启用摇树,因为它们在不改变程序行为的情况下减少了输出大小。
ES Modules Vs CommonJS
CommonJS 比 ESM 规范早了几年。它旨在解决 JavaScrip