Неожиданный код после встряхивания дерева
Дано entry
это модуль ввода:
Он просто использует function1
от external1
модуль.
Я ожидал что external1.function2
и весь external2
Модуль будет устранен.
Тем не менее, мой вывод включает в себя external2.function1
, Просто почему?
Вот репо всего этого.
1 ответ
Встряхивание дерева не работает идеально, поскольку javascript по своей природе является динамическим языком, поэтому иногда он делает пессимистическое предположение, что данный код может использоваться в других местах. во external1 вы импортировали все из external2 через * как xxx из 'external2' - и это предполагает, что данный упакованный модуль может иметь ссылку в другом месте и не удаляет его.