Как NPM обрабатывает конфликты с суб / транзитивными зависимостями - PullRequest
0 голосов
/ 25 апреля 2020

Я только что обнаружил (для себя), что NPM не работает, как другие системы управления пакетами, которые я использовал в прошлом. Мое базовое c понимание вещей состоит в том, что каждая из моих зависимостей также будет иметь свою собственную папку node_modules со своими собственными зависимостями (и, с более поздними версиями npm, эта вторая папка node_modules будет создана только когда возникает конфликт версий)

Это кажется довольно опрятным, но мне интересно, как npm обрабатывает - sub-sub? конфликты зависимости. Я извиняюсь за то, что не могу лучше владеть языком - но вот что я имею в виду.

Я хочу установить версию 3.0 @foo/bar в свой проект.

Второй пакет - назовем его @second/package - Я хочу установить версию 2.0 @foo/bar.

Теперь я понимаю, как это возможно с NPM. У @second/package будет собственная папка node_modules с версией 2.0 @foo/bar

./node_modules/@foo/bar                              # version 3.0
./node_modules/@second/package/node_modules/@foo/bar # version 2.0

Однако -

Я также хочу установить версию 8.0 @zip/zap.

Но @second/package хочет установить версию 7.0 @zip/zap.

А версия 2.0 @foo/bar хочет установить версию 6.0 @zip/zap.

./node_modules/@foo/bar                              # version 3.0
./node_modules/@zip/zap                              # version 8.0
./node_modules/@second/package/node_modules/@foo/bar # version 2.0
./node_modules/@second/package/node_modules/@zip/zip # version 7.0    

# where does version 6.0 of @zip/zap go?

Где заканчивается версия 6.0 @zip/zap? npm создает третью level node_module папку или сдается и говорит, что не может разрешить это дерево зависимостей? Или какая-то третья вещь? Или мое понимание npm все еще ошибочно?

Прежде чем я go и выясню, как настроить свой собственный npm репозиторий с поддельными пакетами, чтобы проверить это, я подумал, что было бы лучше спрашивайте.

1 Ответ

0 голосов
/ 28 апреля 2020

NPM, к моему удивлению, просто делает правильную вещь и продолжает вкладывать зависимости зависимостей. то есть ответ на вопрос

, где версия 6.0 @ zip / zap go?

равна

./node_modules/@second/package/node_modules/@foo/bar/node_modules/@zip/zap
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...