【发布时间】:2018-06-29 10:01:39
【问题描述】:
我使用 Webpack (4.12) 构建使用 yarn (1.2.1) 安装的模块的应用程序。它由yarn.lock 控制,使用具有自己的yarn.lock 文件的内部(公司)模块列表等等。
我发现相同版本的模块在应用程序包中重复了很多。就像 lodash 被收录 9 次。我开始查看版本,发现 9 个副本只是 lodash 的 2 个不同版本。然后我查看了包含它们的依赖项,这是lodash(带有别名)的哪些模块依赖项的结果:
(^4.16.4 / 4.17.4) application
(^4.17.2 / 4.17.5) @grp/libA
(^4.16.4 / 4.17.4) @grp/libA / @grp/libB
(^4.16.4 / 4.17.4) @grp/libA / @grp/libC
(^4.17.4 / 4.17.5) @grp/libD
(^4.16.4 / 4.17.4) @grp/libD / @grp/libE
(^4.17.2 / 4.17.5) @grp/libF
(^4.16.4 / 4.17.4) @grp/libF / @grp/libG
(^4.16.4 / 4.17.4) @grp/libF / @grp/libG
括号中的数字表示package.json中的版本,以及node_modules中的实际版本(与yarn install一起安装)。
我了解不同版本的模块可能需要复制以避免错误,但即使yarn在每个模块中安装了子模块(如@grp/libA / @grp/libB和@grp/libA / @grp/libC下的lodash),每个模块都拥有node_modules, webpack 不应该看到它们包含相同版本的 lodash,并且至少将其减少到只有 4.17.4 和 4.17.5 的两个副本?
【问题讨论】:
标签: javascript webpack yarnpkg