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)?
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.
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.
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 +).
@ 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
welches node_modulesVerzeichnis entfernt und npm installdann ausführt . Durch das Entfernen vor der Installation wird sichergestellt, dass alle Pakete neu installiert werden.
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 rebuild
könnte auch einige Probleme mit nativen Abhängigkeiten helfennpm update <packageName>
funktioniert es hervorragendAntworten:
Der einfachste Weg, den ich sehen kann, ist das Löschen eines
node_modules
Ordners und das Ausführennpm install
.quelle
package.json
Datei für Ihre App erstellt.npm install
nach dem Entfernen desnode_modules
Verzeichnisses zu unterschiedlichen Versionen von Abhängigkeiten führen kann, die beimpackage.json
Herunterziehen definiert wurden. Wenn Sie sehr spezifische Versionen von Abhängigkeiten für Ihre App benötigen, seien Sie vorsichtig undnpm shrinkwrap
überprüfen Sie Ihrnode_modules
Verzeichnis, um die Quellcodeverwaltung zu steuern.npm install
und es werden immer Abhängigkeiten neu installiert und Pakete auf die neuesten Versionen aktualisiert, wie von package.json zugelassen. Das Entfernen vonnode_modules
Ordnern 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 Sienpm prune
stattdessen ausführennpm install
aktualisiert 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.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.
quelle
npm uninstall <package_name>
um ein bestimmtes Paket zu deinstallieren, oder ausführen,npm uninstall
um alle Pakete zu deinstallieren.npm uninstall
ohne Angabe eines Pakets, aber das wirft einen Fehler.Meistens verwende ich den folgenden Befehl, um eine vollständige Neuinstallation aller Knotenmodule zu erreichen (stellen Sie sicher, dass Sie sich im Projektordner befinden).
Sie können auch
npm cache clean
nach dem Entfernen desnode_modules
Ordners ausgeführt werden, um sicherzustellen, dass keine zwischengespeicherten Abhängigkeiten vorhanden sind.quelle
npm
Der CLI-Befehl für wurde aktualisiertinstall
und das--force
Flag hinzugefügt .Das
--force
(oder-f
) Argument wird erzwingennpm
Abrufen von Remote-Ressourcen, selbst wenn eine lokale Kopie auf der Festplatte vorhanden ist.Sehen
npm install
quelle
Sie können das Neuinstallationsmodul verwenden in npm enthaltene .
Nach der Installation können Sie den folgenden Befehl verwenden:
Der einzige Unterschied beim manuellen Entfernen
node_modules
und Erstellen von Ordnernnpm install
besteht 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 +).quelle
Sie können dies mit einem einfachen Befehl tun:
quelle
Für Windows können Sie verwenden
welches
node_modules
Verzeichnis entfernt undnpm install
dann ausführt . Durch das Entfernen vor der Installation wird sichergestellt, dass alle Pakete neu installiert werden.quelle
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
Wenn Sie mit der Version Ihrer Abhängigkeiten in Ihrer Datei package.json einverstanden sind, müssen Sie diese Schritte nicht einfach ausführen
quelle