为什么依赖在Webpack工件中重复多次?

tob*_*obi 5 javascript webpack styled-components atlaskit

我有一个多入口点webpack构建,我正在努力优化生产的工件大小.webpack-bundle-analyzer产生了以下图片:

在此输入图像描述

很明显,AtlasKit依赖项构成了总工件大小的很大一部分.具体来说,我看到这种styled-components.es.js情况重复了很多次.更重要的是,同样的依赖性也存在于vendor.js其中所有其他包之间共享.

任何人都可以解释为什么styled-components.es.js重复全部以及为什么它不能通过单一依赖共享vendor.js?我有什么办法可以删除重复项并且只依赖于单个styled-components.es.js依赖项vendor.js吗?

我发现AtlasKit依赖项有一个node_modules包含在包中的嵌套文件夹有点奇怪.为什么dist还不够?也许这是为什么styled-components.es.js不能通过共享的部分原因vendor.js

在此输入图像描述

我试图通过webpack的IgnorePlugin(类似于moment.jslocales)手动排除依赖,但到目前为止失败了.

任何见解将不胜感激.谢谢!

tob*_*obi 1

虽然我不知道到底是什么解决了这个问题,但我只是注意到最新版本的 Atlaskit 现在可以使用 tree-shaking 了。现在,我在大型供应商.js 中从 Atlaskit 共享的所有内容中获得了最少的工件。

在此输入图像描述