Могут ли npm-update и npm-install давать разные результаты?
Допустим, у нас есть 3 пакета со следующими зависимостями:
C -> B@ ^ 1.0.0 и B -> A@ ^ 1.0.0
(модуль C зависит только от модуля B версии 1.0.0 и выше; модуль B зависит от модуля A версии 1.0.0 и выше;)
Сейчас я делаю следующие шаги:
- npm-install в модуле C (результат: node_modules содержит A@^1.0.0 и B@^1.0.0)
- npm-публикация вышестоящей версии модуля A: A@^1.0.1
- npm-update в модуле C (результат: node_modules содержит A@^1.0.0 и B@^1.0.0) --- Модуль не изменился!
Но, если я очищаю node_modules, а затем снова npm-устанавливаю модуль C, я получаю, что node_modules содержит A@^1.0.1 и B@^1.0.0
- Есть ли способ получить полностью обновленные node_modules без удаления и установить его снова?
- Если нет, то что плохого в том, как я управляю зависимостями? Я не хочу явно добавлять все деревья зависимостей, чтобы обновление узла работало
1 ответ
npm update
соблюдает семантическое управление версиями, оно не будет обновлять основные версии пакетов, если у вас есть ^
зависимость.
^
"зависимость" в буквальном смысле означает, что обновлять до минорной версии можно только нормально - поскольку основные версии содержат критические изменения.
Эта команда обновит все перечисленные пакеты до последней версии (указанной в теге config) с учетом semver.
Из документов