В чем практическая разница между 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 installnpm 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>--forcenpm 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?