Я только что обнаружил (для себя), что 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 репозиторий с поддельными пакетами, чтобы проверить это, я подумал, что было бы лучше спрашивайте.