【发布时间】:2020-02-19 23:58:54
【问题描述】:
这是一个示例存储库,其中显示了此线程中报告的问题的示例:https://github.com/Eux86/tree-shaking-barrel-test/blob/master/README.md
我试图了解使用 Barrel 文件从库项目中导出函数和类时,将其导入另一个使用 webpack 的项目时会产生什么影响,并且应该能够对捆绑包进行 treeshake。
假设我有一个项目:
图书馆
index.ts
libA.ts
libB.ts
index.ts 有这个代码:
export { LibAMain } from 'LibA';
export { LibBMain } from 'LibB';
所以我使用索引作为桶文件来导出我将在我的库中开发的所有函数。
第二个项目是:
图书馆用户
- index.ts
Index.ts 有这个代码:
import { LibAMain } from 'library'
LibAMain();
现在:library-user 是使用 webpack 构建的,我希望它能够对 MyLib 中未使用的库进行 treeshake,但是当我查看生成的包时,我发现它包含引导 LibA.js 和 LibB.js,其中不应该在那里:
如果我将 index.ts 更改为:
import { LibAMain } from 'library/lib/LibA'
LibAMain();
然后 webpack 做得很好,我只在最终包中看到了 LibA:
TL;DR:我怎样才能继续使用桶索引文件,只从“库”导入所有内容,但仍然让 treeshaking 工作?
感谢您的帮助:)
【问题讨论】:
标签: webpack import tree-shaking