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