Tree shaking 如何工作?为什么有些代码无法移除?
理解静态模块结构、使用关系和副作用分析。
参考答案
Tree shaking 基于模块导入导出关系和静态分析,移除确认不需要的代码。ES Modules 的静态结构便于分析,但是否能删除还受副作用、打包器配置和代码写法影响。
模块顶层修改全局对象、注册监听或导入样式可能有副作用,不能仅因为导出未使用就删除整个模块。错误设置包的 sideEffects: false 可能导致必要的初始化或样式被移除。
应结合构建产物分析验证结果,不能把“用了 ESM”直接等同于“所有未使用代码都会被移除”。