Как переустановить зависимости приложения с помощью npm?

386

Есть ли простой способ переустановить все пакеты, от которых зависит мое приложение (т.е. они находятся в моей папке node_modules приложений)?

trusktr
источник
4
npm rebuildможет также помочь решить некоторые проблемы с родными зависимостями
Francisco Presencia
1
На случай, если это поможет другим: если вы просто пытаетесь переустановить один пакет, то npm update <packageName>отлично работает
rinogo

Ответы:

619

Самый простой способ, который я вижу, это удалить node_modulesпапку и выполнить npm install.

Вадим Барышев
источник
28
Согласовано; при условии, что вы создали package.jsonфайл для своего приложения.
JohnnyHK
9
Помните, что запуск npm installпосле удаления node_modulesкаталога может привести к разным версиям зависимостей, определенных для удаления package.json. Если вам требуются очень конкретные версии зависимостей для вашего приложения, будьте осторожны и изучите npm shrinkwrapили проверьте свой node_modulesкаталог для контроля версий .
кузнец
10
@smithclay Я определил явную версию пакетов в package.json моего приложения, так что должно быть все в порядке, верно?
trusktr
@vadim Я проводил некоторые тесты поведения, npm installи он всегда переустанавливал зависимости и обновлял пакеты до последних версий, как разрешено package.json. Таким образом, удаление node_modulesпапок не требуется, если вы считаете, что они повреждены. Есть ли причина, по которой вы думаете, что ее следует удалить? Однако, если целью является удаление любых посторонних пакетов, вы можете выполнить их npm pruneвместо этого
himanshu
1
@himanshu вы правы, npm installобновляет все модули до состояния package.json. Но вопрос в том, как переустановить все пакеты . Таким образом, они могут быть повреждены или, возможно, потребуется перестроить двоичные части после обновления версии node.js.
Вадим Барышев
96

Правильный путь - выполнить npm update. Это действительно мощная команда, она обновляет отсутствующие пакеты, а также проверяет, можно ли использовать более новую версию уже установленного пакета.

Прочтите Введение в NPM, чтобы понять, что вы можете делать с npm.

Himanshu
источник
58
Но если нет более новой упаковки, то это ничего не даст, верно? Я пытаюсь принудительно переустановить, даже если пакет уже на последней версии.
trusktr
2
Если пропавших пакетов нет, он проверит, могут ли они использовать последние версии пакетов (включая зависимости пакетов), перечисленные в package.json. Так что, по сути, он будет обновлять пакеты, если это возможно. Но это не будет переустановить. Если вы хотите сделать это с помощью команд, вы можете выполнить npm uninstall <package_name>удаление определенного пакета или выполнить npm uninstallудаление всех пакетов.
himanshu
1
Я попытался сделать только npm uninstallбез указания пакета, но это выдает ошибку.
trusktr
У вас есть файл package.json в папке, где вы его выполнили? Если вы удалите глобальный пакет, вам нужно добавить -g
himanshu
1
Ссылка, которую вы предоставляете, устарела, можете ли вы предоставить новую? (Я нашел это, но я не уверен, что это приемлемо изменить)
Motti
64

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

rm -rf node_modules && npm install

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

0x1ad2
источник
48

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 +)

deksden
источник
1
@ g00glen00b Я отредактировал, так что теперь он содержит полезную информацию без гиперссылок
Роб
@ g00glen00b Это прекрасно; это не делает это кандидатом на удаление. Пожалуйста, смотрите этот пост - В частности, он рассматривает короткие ответы со ссылкой, при условии, что есть некоторая полезная информация (например, название библиотеки), когда гиперссылка удалена
Роб
6

Вы можете сделать это с помощью одной простой команды:

npm ci
Joeri
источник
Это правильный ответ!
Виктор Калатрамас
1

Для Windows вы можете использовать

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

который удаляет node_modulesкаталог и выполняет npm installзатем. Удаление перед установкой гарантирует, что все пакеты будут переустановлены.

michal.jakubeczy
источник
0

Выполните этот шаг, чтобы переустановить модули узлов и обновить их

работает, даже если папка node_modules не существует. Теперь выполните следующую команду синхронно. Вы также можете использовать «обновление npm», но я думаю, что это предпочтительный способ

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
Педро JR
источник