Як перевстановити залежність програми за допомогою npm?


384

Чи є простий спосіб перевстановити всі пакунки, від яких залежить моє додаток (тобто вони знаходяться в папці моїх додатків node_modules)?


4
npm rebuildМожливо, також допоможуть деякі проблеми із рідними залежностями
Francisco Presencia

1
У випадку, якщо це допомагає іншим: Якщо ви просто намагаєтесь перевстановити один пакет, це npm update <packageName>чудово працює
rinogo

Відповіді:


617

Найпростіший спосіб, який я бачу, - це видалення node_modulesпапки та виконання npm install.


27
Домовились; припустимо, що ви створили package.jsonфайл для свого додатка.
JohnnyHK

8
Слідкуйте за тим, що запуск npm installпісля видалення node_modulesкаталогу може призвести до різних версій залежностей, визначених при package.jsonзниженні. Якщо вам потрібні дуже конкретні версії залежностей для вашої програми, будьте обережні, загляньте npm shrinkwrapабо перевірте у своєму node_modulesкаталозі, щоб контролювати джерело.
smithclay

9
@smithclay Я визначив явну версію пакунків в пакеті.json мого додатка, так що це повинно бути добре, правда?
trusktr

@vadim Я робив тестування на поведінку, npm installі він завжди перевстановлює залежності та оновлює пакети до останніх версій, дозволених package.json. Тому видалення node_modulesпапок не потрібно, якщо ви не вважаєте, що його пошкоджено. Чи є причина, на вашу думку, її слід усунути? Однак якщо наміром є видалення будь-яких сторонніх пакетів, ви можете npm pruneзамість цього виконати
himanshu

1
@himanshu Ви правильно оновлюєте npm installвсі модулі до стану package.json. Але питання полягає в тому, як перевстановити всі пакети . Тому вони можуть бути пошкоджені або можуть знадобитися відновити бінарні частини після оновлення node.js verison.
Вадим Баришев

96

Правильний спосіб - це виконання npm update. Це дійсно потужна команда, вона оновлює відсутні пакети, а також перевіряє, чи можна використовувати нову версію вже встановленого пакету.

Прочитайте Intro to NPM, щоб зрозуміти, що можна робити з npm.


57
Але якщо немає більш нового пакету, то це нічого не зробить, правда? Я намагаюся змусити перевстановитись, навіть якщо пакет уже в останній версії.
trusktr

2
Якщо відсутні відсутні пакети, то він перевірить, чи може він використовувати останні версії пакетів (включаючи залежності цих пакетів), перелічені в package.json. Таким чином, по суті він буде поновлювати пакети, якщо це можливо. Але це не буде перевстановлюватися. Якщо ви хочете зробити це за допомогою команд, ви можете виконати npm uninstall <package_name>для видалення певного пакету або npm uninstallдля видалення всіх пакетів.
himanshu

1
Я намагався робити це, npm uninstallне вказуючи пакет, але це спричиняє помилку.
trusktr

Чи є у вас папка.json в папці папок, де ви це виконали? Якщо ви видалите глобальний пакет, вам потрібно буде додати -g
himanshu

1
Посилання, яке ви надаєте, є мертвим, чи можете ви надати новий? (Я знайшов це, але не впевнений, що це прийнятно змінити)
Motti

62

Більшу частину часу я використовую наступну команду для повного перевстановлення всіх модулів вузлів (будьте впевнені, що ви знаходитесь в папці проекту).

rm -rf node_modules && npm install

Ви також можете запустити npm cache cleanпісля видалення node_modulesпапки, щоб переконатися, що немає кешованих залежностей.


47

npmоновив команду CLI для installта додав --forceпрапор.

npm install --force

Аргумент --force(або -f) змусить npmотримати віддалені ресурси, навіть якщо локальна копія існує на диску.

Подивитися npm install


Чудово , працюйте також із 'git + github.com ...'!
Тоні Бюнтер

12

Ви можете використовувати модуль перевстановлення, знайдений в npm.

Після його встановлення ви можете скористатися такою командою:

reinstall

Єдина відмінність від видалення node_modulesпапки вручну та її створення npm installполягає в тому, що ця команда автоматично очищає кеш npm. Отже, ви можете отримати три кроки в одній команді.

upd: npx reinstall це спосіб запустити цю команду без глобальної установки пакету (лише для npm5 +)


1
@ g00glen00b Я відредагував так, що тепер він містить корисну інформацію без гіперпосилань
Роб

@ g00glen00b Це прекрасно; це не робить цього кандидатом на видалення. Будь ласка, дивіться цю публікацію - Зокрема, вона стосується коротких відповідей за посиланням за умови, що є якась корисна інформація (тобто назва бібліотеки), коли гіперпосилання видалено
Rob


1

Для Windows ви можете використовувати

(if exist node_modules rmdir node_modules /q /s) && npm install

який видаляє node_modulesкаталог і виконує npm installпотім. Видалення перед встановленням гарантує, що всі пакунки будуть перевстановлені.


0

Виконайте цей крок, щоб перевстановити модулі вузлів та оновити їх

працює, навіть якщо папка node_modules не існує. тепер виконайте таку команду синхронно. Ви також можете використовувати "npm update", але я думаю, що це кращий спосіб

npm outdated // not necessary to run this command, but this will show outdated dependencies

npm install -g npm-check-updates // to install the "ncu" package

ncu -u --packageFile=package.json // to update dependencies version in package.json...don't run this command if you don't need to update the version

npm install: will install dependencies in your package.json file.

якщо ви добре з версією ваших залежностей у вашому файлі package.json, виконувати ці кроки просто не потрібно

 npm install
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.