У чому полягає практична різниця між 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 installnpm updateДодатково : installі updateза замовчуванням обробляйте devDependitions по-різному
npm installбуде встановлювати / оновлювати devDependencies , якщо тільки--production не буде доданий прапорnpm updateбуде ігнорувати devDependitions, якщо не --devбуде додано прапорНавіщо використовувати npm install взагалі?
Тому що npm installробить більше, коли дивишся, крім того, щоб працювати зі своїми залежностями package.json. Як ви бачите в npm встановлення, ви можете ...
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 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?