В чем практическая разница между npm install
и npm update
? Когда я должен использовать что?
520
Разница между НПМ установки и НПМ обновление обработки версий пакетов , указанных в 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
~1.3
?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.
или лучше обновить модуль до последней версии:
--save
: Пакет появится в ваших зависимостях.Больше информации: npm-install
источник
npm install express@latest --save --force
было именно то, что я хотел.Многие различия уже были упомянуты. Вот еще один:
Запуск
npm install
в верхней части исходного каталога будет запускать различные сценарии:prepublish
,preinstall
,install
,postinstall
. В зависимости от того, что делают эти сценарии, anpm 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.jsonnpm install
: установить модули узлов, которые определены в package.json (без обновления)источник
npm update
большое количество зависимостей вpackage-lock.json
. Чтобы все необходимые пакеты были доступны иpackage-lock.json
были правильными, мне всегда нужно выполнятьnpm install
сразу послеnpm update
.