Jak ponownie zainstalować zależności aplikacji za pomocą npm?


384

Czy istnieje prosty sposób na ponowną instalację wszystkich pakietów, od których zależy moja aplikacja (tzn. Znajdują się one w folderze node_modules aplikacji)?


4
npm rebuildmoże również pomóc w rozwiązaniu niektórych problemów z rodzimymi zależnościami
Francisco Presencia

1
W przypadku, gdy pomaga innym: Jeśli tylko próbujesz ponownie zainstalować jeden pakiet, npm update <packageName>działa świetnie
rinogo,

Odpowiedzi:


617

Najprostszym sposobem, jaki widzę, jest usunięcie node_modulesfolderu i wykonanie npm install.


27
Zgoda; zakładając, że utworzyłeś package.jsonplik dla swojej aplikacji.
JohnnyHK,

8
Uważaj, że uruchomienie npm installpo usunięciu node_moduleskatalogu może doprowadzić package.jsondo rozebrania różnych wersji zależności zdefiniowanych podczas usuwania . Jeśli potrzebujesz bardzo specyficznych wersji zależności dla swojej aplikacji, zachowaj ostrożność i zajrzyj do katalogu npm shrinkwraplub sprawdź w nim kontrolę node_modulesźródła.
smithclay

9
@smithclay Zdefiniowałem jawną wersję pakietów w pliku package.json mojej aplikacji, więc powinno być dobrze, prawda?
trusktr

@vadim Testowałem zachowanie npm installi zawsze przywraca zależności i aktualizuje pakiety do najnowszych wersji, na co pozwala pakiet.json. Dlatego usuwanie node_modulesfolderów nie jest potrzebne, chyba że uważasz, że jest uszkodzony. Czy istnieje powód, dla którego uważasz, że należy go usunąć? Jeśli jednak zamierzasz usunąć wszelkie niepotrzebne pakiety, możesz npm prunezamiast tego wykonać
himanshu,

1
@himanshu masz rację npm installuaktualnia wszystkie moduły do ​​stanu package.json. Ale pytanie brzmi: jak ponownie zainstalować wszystkie pakiety . Mogą więc być uszkodzone lub mogą wymagać odbudowania części binarnych po aktualizacji wersji node.js.
Vadim Baryshev

96

Właściwym sposobem jest wykonanie npm update. To naprawdę potężne polecenie, aktualizuje brakujące pakiety, a także sprawdza, czy można użyć nowszej wersji pakietu już zainstalowanego.

Przeczytaj wprowadzenie do NPM, aby zrozumieć, co możesz zrobić z npm.


57
Ale jeśli nie będzie nowszego pakietu, nic to nie da, prawda? Próbuję wymusić ponowną instalację, nawet jeśli pakiet jest już w najnowszej wersji.
trusktr

2
Jeśli nie ma brakujących pakietów, sprawdzi, czy może korzystać z najnowszych wersji pakietów (w tym zależności pakietów) wymienionych w pliku package.json. Zasadniczo więc zaktualizuje pakiety, jeśli to możliwe. Ale nie zostanie ponownie zainstalowany. Jeśli chcesz to zrobić za pomocą poleceń, możesz wykonać, npm uninstall <package_name>aby odinstalować określony pakiet lub wykonać, npm uninstallaby odinstalować wszystkie pakiety.
himanshu,

1
Próbowałem to zrobić npm uninstallbez podawania pakietu, ale to powoduje błąd.
trusktr

Czy masz plik package.json w katalogu folderów, w którym to wykonałeś? Jeśli odinstalowujesz pakiet globalny, musisz dodać -g
himanshu

1
Podany przez Ciebie link jest martwy, czy możesz podać nowy? (Znalazłem to, ale nie jestem pewien, czy można na to zmienić)
Motti,

62

Przez większość czasu używam następującego polecenia, aby uzyskać pełną ponowną instalację wszystkich modułów węzła (upewnij się, że jesteś w folderze projektu).

rm -rf node_modules && npm install

Możesz także uruchomić npm cache cleanpo usunięciu node_modulesfolderu, aby upewnić się, że nie ma żadnych buforowanych zależności.


47

npmzaktualizowałem komendę CLI installi dodałem --forceflagę.

npm install --force

Argument --force(lub -f) wymusi npmpobranie zasobów zdalnych, nawet jeśli na dysku istnieje kopia lokalna.

Widzieć npm install


Świetnie, współpracuj również z „git + github.com ...”!
Toni Bünter

12

Możesz użyć modułu reinstalacji znalezionego w npm.

Po zainstalowaniu możesz użyć następującego polecenia:

reinstall

Jedyną różnicą przy ręcznym usuwaniu node_modulesfolderów i tworzeniu npm installjest to, że to polecenie automatycznie usuwa pamięć podręczną npm. Tak więc możesz uzyskać trzy kroki w jednym poleceniu.

upd: npx reinstall to sposób na uruchomienie tego polecenia bez globalnej instalacji pakietu (tylko dla npm5 +)


1
@ g00glen00b Edytowałem, aby zawierał przydatne informacje bez hiperłączy
Rob

@ g00glen00b To w porządku; nie czyni z tego kandydata do usunięcia. Zapoznaj się z tym postem - w szczególności odpowiada on na krótkie odpowiedzi z linkiem, pod warunkiem, że po usunięciu hiperłącza dostępne są przydatne informacje (tj. Nazwa biblioteki)
Rob


1

W systemie Windows możesz użyć

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

który usuwa node_moduleskatalog i wykonuje npm installwtedy. Usunięcie przed instalacją zapewnia, że ​​wszystkie pakiety zostaną ponownie zainstalowane.


0

Wykonaj ten krok, aby ponownie zainstalować moduły węzłów i zaktualizować je

działa, nawet jeśli folder node_modules nie istnieje. teraz wykonaj następujące polecenie synchronicznie. możesz także użyć „aktualizacji npm”, ale myślę, że wolałby to sposób

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.

jeśli nie masz nic przeciwko wersji swoich zależności w pliku package.json, nie musisz wykonywać tych kroków, po prostu uruchom

 npm install
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.