Почему NPM не устанавливает все пакеты на корневом уровне node_modules? - PullRequest
0 голосов
/ 05 сентября 2018

У 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.

...