В чем практическая разница между npm install
и npm update
? Когда я должен использовать что?
В чем практическая разница между npm install
и npm update
? Когда я должен использовать что?
Ответы:
Разница между НПМ установки и НПМ обновление обработки версий пакетов , указанных в 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 update
Дополнительно : install
и update
по умолчанию обрабатывают devDependencies по-другому
npm install
будет устанавливать / обновлять devDependencies , если --production
не будет добавлен флагnpm update
будет игнорировать devDependencies, если --dev
флаг не добавленЗачем npm install
вообще использовать ?
Потому что npm install
делает больше, когда вы смотрите, кроме обработки ваших зависимостей в package.json
. Как вы можете видеть в npm install, вы можете ...
PATH
), используяnpm install -g <name>
--force
npm install --save somePackage
сохранение * в зависимости?
postinstall
запускаются при установке, но не при обновлении.
install
и по- update
разному работают с URL-адресами git, тегами git и т. Д., Указанными в package.json
тогда, было бы здорово добавить эти примеры в пример.
1.3.0 -> 1.3.1
Это похоже ^1.3.0
, где ^
обновления основной версии, то есть 1.3.0 -> 1.4.0
.
npm install устанавливает все модули, указанные в package.json
файле и их зависимости.
npm update обновляет все пакеты в node_modules
каталоге и их зависимости.
npm install express устанавливает только экспресс-модуль и его зависимости.
npm update express update express module (начиная с npm@2.x, он не обновляет свои зависимости).
Таким образом, обновления предназначены для тех случаев, когда у вас уже есть модуль и вы хотите получить новую версию.
npm install
или npm update
? Или, другими словами, я сейчас использую npm install
и, похоже, также обновляю, есть ли какая-то причина, почему я должен когда-либо использовать npm update
?
update
что всегда будет обновляться до последней версии, независимо от package.json, и install
будет ли уважать версию, указанную в package.json?
update
устанавливает (или обновляет) последнюю версию модуля. install
устанавливает последнюю версию модуля, если он не представлен, в противном случае сохраняет текущую версию.
npm update
до последней версии на основе вашего package.json, не зависимо от этого. Если у вас есть «express»: «3.x» и вы используете версию 3.1.0, он обновится до последней версии 3.x. Если есть версия 4.x, она не установит последнюю версию.
В большинстве случаев будет установлена последняя версия модуля, опубликованная на npm.
npm install express --save
или лучше обновить модуль до последней версии:
npm install express@latest --save --force
--save
: Пакет появится в ваших зависимостях.
Больше информации: npm-install
npm install express@latest --save --force
было именно то, что я хотел.
Многие различия уже были упомянуты. Вот еще один:
Запуск npm install
в верхней части исходного каталога будет запускать различные сценарии: prepublish
, preinstall
, install
, postinstall
. В зависимости от того, что делают эти сценарии, a npm install
может выполнять значительно больше работы, чем просто установка зависимостей.
У меня только что был случай использования, где prepublish
бы позвонить make
иMakefile
был разработан для получения зависимостей, если они package.json
были обновлены. Вызов npm install
изнутри Makefile
привел бы к бесконечной рекурсии, в то время как вызов npm update
работал просто отлично, устанавливая все зависимости, чтобы сборка могла продолжаться, даже если make
вызывался напрямую.
redis
модуль и other_module
вам потребуется более старая версия redis
, npm install other_module
вы гарантированно other_module
будете использовать более старую версию. Это может добавить в other_module/node_modules/redis
случае необходимости.
npm update
: установите и обновите последние модули узлов, которые находятся в package.json
npm install
: установить модули узлов, которые определены в package.json (без обновления)
npm update
большое количество зависимостей в package-lock.json
. Чтобы все необходимые пакеты были доступны и package-lock.json
были правильными, мне всегда нужно выполнять npm install
сразу после npm update
.
~1.3
?