Wie installiere ich die Abhängigkeiten einer App mit npm neu?

384

Gibt es eine einfache Möglichkeit, alle Pakete neu zu installieren , von denen meine App abhängt (dh sie befinden sich im Ordner node_modules meiner Apps)?

trusktr
quelle
4
npm rebuildkönnte auch einige Probleme mit nativen Abhängigkeiten helfen
Francisco Presencia
1
Falls es anderen hilft: Wenn Sie nur versuchen, ein Paket neu zu installieren, npm update <packageName>funktioniert es hervorragend
rinogo

Antworten:

617

Der einfachste Weg, den ich sehen kann, ist das Löschen eines node_modulesOrdners und das Ausführen npm install.

Vadim Baryshev
quelle
28
Einverstanden; Angenommen, Sie haben eine package.jsonDatei für Ihre App erstellt.
JohnnyHK
9
Beachten Sie, dass das Ausführen npm installnach dem Entfernen des node_modulesVerzeichnisses zu unterschiedlichen Versionen von Abhängigkeiten führen kann, die beim package.jsonHerunterziehen definiert wurden. Wenn Sie sehr spezifische Versionen von Abhängigkeiten für Ihre App benötigen, seien Sie vorsichtig und npm shrinkwrapüberprüfen Sie Ihr node_modulesVerzeichnis, um die Quellcodeverwaltung zu steuern.
Smithclay
10
@smithclay Ich habe die explizite Version der Pakete in der package.json meiner App definiert, also sollte das in Ordnung sein, oder?
Trusktr
@vadim Ich habe einige Tests zum Verhalten von durchgeführt npm installund es werden immer Abhängigkeiten neu installiert und Pakete auf die neuesten Versionen aktualisiert, wie von package.json zugelassen. Das Entfernen von node_modulesOrdnern ist daher nur erforderlich, wenn Sie der Meinung sind, dass sie beschädigt sind. Gibt es einen Grund, warum Sie denken, dass es entfernt werden sollte? Wenn jedoch die Absicht besteht, fremde Pakete zu entfernen, können Sie npm prunestattdessen ausführen
himanshu
1
@himanshu Sie haben Recht, npm installaktualisiert alle Module auf den Status package.json. Die Frage ist jedoch, wie alle Pakete neu installiert werden können . Daher sind sie möglicherweise beschädigt oder müssen die Binärteile nach dem Upgrade von node.js verison neu erstellen.
Vadim Baryshev
96

Der richtige Weg ist auszuführen npm update. Es ist ein wirklich mächtiger Befehl, der die fehlenden Pakete aktualisiert und auch prüft, ob eine neuere Version des bereits installierten Pakets verwendet werden kann.

Lesen Sie die Einführung in NPM, um zu verstehen, was Sie mit npm tun können.

Himanshu
quelle
58
Aber wenn es kein neueres Paket gibt, wird dies nichts bewirken, oder? Ich versuche, eine Neuinstallation zu erzwingen, auch wenn das Paket bereits die neueste Version hat.
Trusktr
2
Wenn keine Pakete fehlen, wird geprüft, ob die neuesten Versionen von Paketen (einschließlich der Abhängigkeiten der Pakete) verwendet werden können, die in package.json aufgeführt sind. Im Wesentlichen werden Pakete nach Möglichkeit aktualisiert. Es wird jedoch nicht neu installiert. Wenn Sie dies mit Befehlen tun möchten, können Sie ausführen, npm uninstall <package_name>um ein bestimmtes Paket zu deinstallieren, oder ausführen, npm uninstallum alle Pakete zu deinstallieren.
Himanshu
1
Ich habe versucht, nur npm uninstallohne Angabe eines Pakets, aber das wirft einen Fehler.
Trusktr
Haben Sie package.json in dem Ordnerverzeichnis, in dem Sie dies ausgeführt haben? Wenn Sie globales Paket deinstallieren, müssen Sie -g
himanshu
1
Der von Ihnen angegebene Link ist tot. Können Sie bitte einen neuen angeben? (Ich fand dies aber ich bin nicht sicher , dass es akzeptabel ist, es zu ändern)
Motti
63

Meistens verwende ich den folgenden Befehl, um eine vollständige Neuinstallation aller Knotenmodule zu erreichen (stellen Sie sicher, dass Sie sich im Projektordner befinden).

rm -rf node_modules && npm install

Sie können auch npm cache cleannach dem Entfernen des node_modulesOrdners ausgeführt werden, um sicherzustellen, dass keine zwischengespeicherten Abhängigkeiten vorhanden sind.

0x1ad2
quelle
48

npmDer CLI-Befehl für wurde aktualisiert installund das --forceFlag hinzugefügt .

npm install --force

Das --force(oder -f) Argument wird erzwingennpm Abrufen von Remote-Ressourcen, selbst wenn eine lokale Kopie auf der Festplatte vorhanden ist.

Sehen npm install

Itsik Avidan
quelle
Großartig, arbeite auch mit 'git + github.com ...'!
Toni Bünter vor
12

Sie können das Neuinstallationsmodul verwenden in npm enthaltene .

Nach der Installation können Sie den folgenden Befehl verwenden:

reinstall

Der einzige Unterschied beim manuellen Entfernen node_modulesund Erstellen von Ordnern npm installbesteht darin, dass dieser Befehl den Cache von npm automatisch löscht. Sie können also drei Schritte in einem Befehl ausführen.

upd: npx reinstall ist eine Möglichkeit, diesen Befehl auszuführen, ohne das Paket global zu installieren (nur für npm5 +).

deksden
quelle
1
@ g00glen00b Ich habe so bearbeitet, dass es jetzt nützliche Informationen ohne Hyperlinks enthält
Rob
@ g00glen00b Das ist vollkommen in Ordnung; Dies macht dies nicht zu einem Kandidaten für die Löschung. Bitte lesen Sie diesen Beitrag - Insbesondere werden kurze Antworten mit einem Link behandelt, vorausgesetzt, es gibt einige nützliche Informationen (dh den Namen der Bibliothek), wenn der Hyperlink entfernt wird
Rob
6

Sie können dies mit einem einfachen Befehl tun:

npm ci
Joeri
quelle
Das ist die richtige Antwort!
Victor Calatramas
1

Für Windows können Sie verwenden

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

welches node_modulesVerzeichnis entfernt und npm installdann ausführt . Durch das Entfernen vor der Installation wird sichergestellt, dass alle Pakete neu installiert werden.

michal.jakubeczy
quelle
0

Befolgen Sie diesen Schritt, um die Knotenmodule neu zu installieren und zu aktualisieren

funktioniert auch, wenn der Ordner node_modules nicht vorhanden ist. Führen Sie nun den folgenden Befehl synchron aus. Sie können auch "npm update" verwenden, aber ich denke, dies wäre der bevorzugte Weg

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.

Wenn Sie mit der Version Ihrer Abhängigkeiten in Ihrer Datei package.json einverstanden sind, müssen Sie diese Schritte nicht einfach ausführen

 npm install
Pedro JR
quelle