Могут ли 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 и выше;)

Сейчас я делаю следующие шаги:

  1. npm-install в модуле C (результат: node_modules содержит A@^1.0.0 и B@^1.0.0)
  2. npm-публикация вышестоящей версии модуля A: A@^1.0.1
  3. 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.

Из документов

Другие вопросы по тегам