#4536·esbuild

Minify 不会在 webpack 连接的 ESM 容器中删除未使用的绑定(terser 会)

作者: Acongm创建于 2026年9月4日更新于 2026年9月4日

摘要 当 webpack 5 串联大型 ESM 容器(例如 @remixicon/[email protected] index.mjs, ~2.4 MB, 3188 个命名导出,"sideEffects": false)并使用 esbuild 作为生产级压缩器时,未使用的图标组件不会被死代码消除。使用 terser 作为压缩器的相同流程会将其移除。这与 webpack 的文档中描述的行为相符,即 optimization.usedExports 依赖于压缩器来实现语句级 DCE,以及在 #639 / esbuild-loader#178 中的以前讨论,即 esbuild 压缩器仅在捆绑模式下移除未使用的顶级绑定 - 这在 webpack 包装/串联模块时并不适用。