6

npm install против update - в чем разница?

2

Какова практическая разница между командами npm install и npm update? Когда мне следует использовать ту или иную команду?

3 ответ(ов)

0

Команда npm update используется для обновления установленных пакетов до их последних версий, соответствующих версиям, указанным в файле package.json. Эта команда устанавливает и обновляет модули, если для них доступны более новые версии.

С другой стороны, команда npm install устанавливает все зависимости, перечисленные в package.json, но не обновляет их до последних версий. Если зависимости уже установлены, npm install просто проверяет их соответствие записям в package.json и не вносит изменений.

Таким образом, основное различие заключается в том, что npm update обновляет пакеты, а npm install — просто устанавливает или проверяет существующие.

0

Множество отличий уже упоминались, вот еще одно:

Запуск npm install в корневом каталоге вашего исходного кода выполнит различные скрипты: prepublish, preinstall, install, postinstall. В зависимости от того, что делают эти скрипты, npm install может выполнять значительно больше работы, чем просто установку зависимостей.

У меня только что возник случай, когда prepublish вызывал make, а Makefile был настроен для получения зависимостей, если package.json был обновлён. Вызов npm install изнутри Makefile привел бы к бесконечной рекурсии, в то время как вызов npm update сработал без проблем, установив все зависимости, чтобы сборка могла продолжиться, даже если make был вызван напрямую.

0

Когда вы выполняете команду npm update, она обновляет пакеты до последних доступных версий, игнорируя контрольные суммы, сохраненные в файле package-lock.json. Это может стать проблемой, особенно если ваши зависимости указывают на приватные репозитории. Контрольные суммы для таких пакетов могут оказаться поврежденными, и, в результате, команда npm install будет выдавать ошибку несоответствия.

Типичная ошибка может выглядеть так:

npm WARN tarball tarball data for repo@git+ssh://[email protected]/company/repo.git#b2d8280dfb292c13c614352adra910f298a2a771 (sha512-36mxm1NMCHisdfsdfsdfsdsdf3NtFvwpzpjCEZfQTXmoi04B3qVrsTs1tnsdsdfsdfZNIK8lbEGVRVKcDX5u9pY7B==) seems to be corrupted. Trying again.
npm ERR! code EINTEGRITY

Чтобы избежать этой проблемы, вы можете попробовать следующие шаги:

  1. Удалить node_modules и package-lock.json: Смело удалите папку node_modules и файл package-lock.json, а затем выполните npm install снова. Это позволит вам сгенерировать новый package-lock.json с актуальными контрольными суммами.

  2. Проверить зависимости: Убедитесь, что зависимости в вашем package.json указаны правильно и доступны.

  3. Использовать фиксированные версии: Если это возможно, указывайте фиксированные версии ваших зависимостей, чтобы избежать потенциальных проблем с обновлениями.

Следуя этим шагам, вы сможете восстановить работоспособность вашего проекта без ошибок, связанных с контрольными суммами.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь