【问题标题】:Unexpected code after tree-shake摇树后的意外代码
【发布时间】:2018-06-17 15:59:24
【问题描述】:

假设entry是入口模块:

它只使用来自external1 模块的function1

我预计 external1.function2 和整个 external2 模块将被淘汰。

但是,我的输出包括external2.function1。只是……为什么?

Here's a repo 的全部内容。

【问题讨论】:

    标签: typescript webpack uglifyjs dead-code tree-shaking


    【解决方案1】:

    由于 javascript 本质上是动态语言,因此摇树无法完美运行,因此有时它会根据其他地方使用的代码可能进行悲观猜测。在 external1 中,您已经通过 * as xxx from 'external2' 从 external2 导入了所有内容 - 这假设捆绑器给定导出的模块可能在其他地方有引用并且不会删除它。

    【讨论】:

    • 如果这是真的,我们还会在输出中看到external2.function2。但事实并非如此。无论如何,我更新了 repo 以仅通过import {function1 as f1} from './external2'; 导入特定功能。输出是一样的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2021-11-26
    • 2021-05-09
    • 1970-01-01
    相关资源
    最近更新 更多