У NPM есть эта действительно хорошая функция, называемая «дедупликация». В NPM v3 это стало функцией по умолчанию. Эта функция переместит ваши зависимости как можно выше в граф зависимостей, пытаясь сделать граф зависимостей более «плоским». Это замечательно, потому что позволяет устанавливать зависимости, которые зависели несколько раз, только один раз, занимая меньше места, чем полностью вложенная структура. Я все еще вижу дубликаты зависимостей, как в примере ниже.
-module-a@1.0.0
-module-b@1.0.0
--module-a@2.0.0
-module-c@1.0.0
--module-a@2.0.0
В этом случае module-a@2.0.0
будет установлен дважды, поскольку module-a@1.0.0
уже находится на корневом уровне, и если он установлен на корневом уровне, произойдет конфликт имен.
Я бы хотел, чтобы все мои зависимости были установлены на корневом уровне каталога node_modules, но имя модуля было бы <package name + version>
вместо просто <package name>
. Таким образом, повторяющиеся зависимости не могут возникнуть. Если модуль импортируется / требуется из исходного кода, package.json
для этой области будет определять, какой модуль импортировать из node_modules
.