У чому полягає практична різниця між npm install
та npm update
? Коли я повинен використовувати який?
У чому полягає практична різниця між npm install
та npm update
? Коли я повинен використовувати який?
Відповіді:
Різниця між npm встановленням та 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 update
Додатково : install
і update
за замовчуванням обробляйте devDependitions по-різному
npm install
буде встановлювати / оновлювати devDependencies , якщо тільки--production
не буде доданий прапорnpm update
буде ігнорувати devDependitions, якщо не --dev
буде додано прапорНавіщо використовувати npm install
взагалі?
Тому що npm install
робить більше, коли дивишся, крім того, щоб працювати зі своїми залежностями package.json
. Як ви бачите в npm встановлення, ви можете ...
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 express module (починаючи з npm@2.x, він не оновлює свої залежності).
Тож оновлення призначені для того, коли у вас вже є модуль і хочете отримати нову версію.
npm install
або npm update
? Або, інакше кажучи, я зараз використовую, npm install
і, здається, також роблю оновлення, чи є якась причина, чому я коли-небудь повинен використовувати npm update
?
update
завжди буде оновлюватися до останньої версії, незалежно від package.json, при цьому install
буде дотримуватися версія, надана в package.json?
update
встановлює (або оновлює) останню версію модуля. install
встановлює останню версію модуля, якщо його не представлено, інакше зберігається поточна версія.
npm update
оновить до останньої версії на основі пакету.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
. Залежно від того, що роблять ці сценарії, anpm install
може зробити набагато більше роботи, ніж просто встановити залежності.
У мене щойно був випадок використання, де prepublish
зателефонував би, make
а the 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
?