Я работаю над приложением, используя Webpack (4.12) для сборки модулей, установленных с пряжа (1.2.1). Он контролируется yarn.lock
, используйте список внутренних (корпоративных) модулей, которые имеют свои собственные yarn.lock
файлы и т. Д.
Я обнаружил, что модули одной версии многократно дублируются в комплекте приложений. Как lodash
включается 9 раз . Я начал изучать версии и обнаружил, что 9 копий - это всего лишь 2 разные версии lodash
. Затем я посмотрел, какие зависимости включили их, вот результат для каких модулей зависит от 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
).
Я понимаю, что модули разных версий, возможно, придется дублировать, чтобы избежать ошибок, но даже если в пряжу установлены подмодули (например, lodash
в @grp/libA / @grp/libB
и @grp/libA / @grp/libC
), в каждом модуле есть собственные node_modules
, Разве веб-пакеты не должны видеть, что они включают одну и ту же версию lodash и, по крайней мере, уменьшить ее до двух копий для 4.17.4
и 4.17.5
?