树摇后的意外代码

时间:2018-01-08 16:27:32

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

给定function1是条目模块:

enter image description here

它只使用external1模块中的external1.function2

我预计会删除external2和整个external2.function1模块。

但是,我的输出包括$fb = new Facebook([ 'app_id' => '...', 'app_secret' => '...', 'default_graph_version' => 'v2.11', //'default_access_token' => '{access-token}', // optional ]); 。只是..为什么?

Here's a repo整件事。

1 个答案:

答案 0 :(得分:0)

由于javascript本质上是动态语言,因此树抖动不能很好地工作,所以有时它会给出悲观的猜测,因为代码可能在其他地方使用。在external1中,您已经将来自external2的所有内容通过*作为xxx从&external;' external2'导入。 - 这使得假定捆绑器给定导出的模块可能在其他地方有引用并且不会删除它。