Npm install vs. update - какая разница?

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

Ответ 1

Разница между npm install и обновлением npm:

package.json

{
  "name":          "my-project",
  "version":       "1.0",                             // install   update
  "dependencies":  {                                  // ------------------
    "already-installed-versionless-module":  "*",     // ignores   "1.0" -> "1.1"
    "already-installed-semver-module":       "^1.4.3" // ignores   "1.4.3" -> "1.5.2"
    "already-installed-versioned-module":    "3.4.1"  // ignores   ignores
    "not-yet-installed-versionless-module":  "*",     // installs  installs
    "not-yet-installed-semver-module":       "^4.2.1" // installs  installs
    "not-yet-installed-versioned-module":    "2.7.8"  // installs  installs
  }
}

Заключение. Единственное большое различие заключается в том, что уже установленный модуль с нечетким версированием...

  • игнорируется npm install
  • обновляется с помощью обновления npm

Зачем использовать npm install вообще?

Потому что npm install делает больше, когда вы смотрите помимо обработки зависимостей в package.json. Как вы можете видеть в npm install, вы можете...

  • вручную установить node -modules
  • установите их как глобальные (которые помещают их в оболочку PATH), используя npm install -g <name>
  • установите определенные версии, описанные тегами git
  • установить с git url
  • принудительно переустановить с помощью --force

Ответ 2

npm install устанавливает все модули, указанные в файле package.json и их зависимостях.

Обновление npm обновляет все пакеты в каталоге node_modules и их зависимостях.

npm install express устанавливает только экспресс-модуль и его зависимости.

npm update express обновляет экспресс-модуль и его зависимости.

Так что обновления для того, когда у вас уже есть модуль и вы хотите получить новую версию.

Ответ 3

В большинстве случаев, это установит последнюю версию модуля, опубликованную на npm.

npm install express --save

или лучше обновить модуль до последней версии:

npm install [email protected] --save --force

--save: Пакет появится в ваших зависимостях.

Дополнительная информация: npm-install

Ответ 4

Многие различия уже упоминались. Вот еще один:

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

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