Anuluca Date : 2024-08-22 Tags : 2
在使用 Webpack 打包项目时,默认情况下,Webpack 会将所有被 import
的模块都打包进最终的输出文件中,即使这些模块在代码中未被实际使用。这是因为 Webpack 会按照模块的依赖关系来构建模块图,并把所有依赖都打包进去。
不过,Webpack 提供了一些优化手段来减少未使用代码的打包,包括以下两个重要的概念:
Tree Shaking 是一种通过静态分析 ES6 模块导入导出语句的方式来删除未使用代码的技术。Webpack 在生产模式下会自动启用 Tree Shaking。这意味着如果你导入了一个模块,但没有使用其中的某些导出内容,Webpack 可以在打包时去掉这些未使用的部分。
import
和 export
)。如果使用的是 CommonJS(require
和 module.exports
),则 Tree Shaking 无法生效。package.json
中明确标识 sideEffects: false
(或者指定具体有副作用的文件)。Dead Code Elimination(DCE)是进一步清理未使用代码的过程。虽然 Tree Shaking 可以移除未使用的模块导出内容,DCE 则通过代码压缩工具(如 Terser)来移除从未执行的代码路径。
import
语句,Webpack 默认会打包这些模块,即使你没有使用它们。