Пакет загрузок npm в нескольких версиях - PullRequest
0 голосов
/ 23 сентября 2018

В моем package.json я добавил пакет и другой пакет, который является зависимостью от первого пакета.Дерево зависимостей выглядит следующим образом:

@
|
+---+ A@0.0.1
|   |
|   +---+ B@^0.0.1
|
+--- B@0.0.2

Поскольку пакет A требует B в версии ^ 0.0.1 (с кареткой), а для проекта также требуется пакет B в версии 0.0.2 (непосредственно в пакете.json), после вызова npm install я ожидал бы, что дерево будет сплющено до следующей формы:

@
|
+--- A@0.0.1
|
+--- B@0.0.2

Все же это не так.После установки пакетов npm создает папку в node_modules для модуля A в версии 0.0.2, создает папку в node_modules для модуля B в версии 0.0.1 и в папке B создает еще один node_modules с A в версии 0.0.1 (несмотря на каретку в требуемой версии).Итак, мой вопрос: почему?Я что-то пропустил?Я неправильно понимаю назначение карет и тильд?Как я могу заставить npm сгладить эту структуру?npm dedupe не помогло.

1 Ответ

0 голосов
/ 24 сентября 2018

Ваше мышление верно, но карет относится к основной версии 0 по-другому: он допускает только обновления в патчах, а для 0.0.x он вообще не допускает обновлений.

Например, ^0.0.3 разрешит только точно версию 0.0.3.

Для версий, больших или равных 0,1,0, но меньших 1,0,0, каретка принимает ту же самуюповедение как тильда и допускает гибкость в версиях патчей (только).

Например, ^0.1.3 разрешит все версии от 0.1.3 до следующего второстепенного, 0.2.0.

Причина этого в том, что перед первым выпуском 1.0.0 другой патч или младший номер не гарантирует, что изменения не будут нарушены.

источник

...