Какова практическая разница между npm install
и npm update
? Когда следует использовать какой?
Npm install vs. 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
был вызван напрямую.