Wenn in meinem Anwendungsstamm eine package.json-Datei definiert ist und npm install -g
ausgeführt wird, werden alle in package.json definierten Abhängigkeiten global installiert.
Dies scheint jedoch nicht umgekehrt zu funktionieren.
Wenn ich npm uninstall -g
in meinem Anwendungsstammverzeichnis mache, wird ein Fehler ausgegeben, der mich auslöst, um ihm einen Paketnamen zu übergeben.
Sollte dies nicht auch die gleichen Pakete deinstallieren, die ich installiert habe?
Mache ich etwas falsch?
Wenn Sie Bash verwenden, wechseln Sie einfach in den Ordner, in dem sich Ihre package.json-Datei befindet, und führen Sie Folgendes aus:
for package in `ls node_modules`; do npm uninstall $package; done;
Wechseln Sie bei global installierten Paketen in Ihren %appdata%/npm
-Ordner (wenn unter Windows), und führen Sie denselben Befehl aus.
BEARBEITEN: Dieser Befehl bricht mit npm 3.3.6 (Knoten 5.0). Ich verwende jetzt den folgenden Bash-Befehl, den ich in meiner .bashrc-Datei npm_uninstall_all zugeordnet habe:
npm uninstall `ls -1 node_modules | tr '/\n' ' '`
Zusätzlicher Bonus es geht viel schneller!
Das hat für mich funktioniert:
eingabeaufforderung oder gitbash in den Ordner node_modules in Ihrem Projekt und führen Sie dann Folgendes aus:
npm uninstall *
Alle lokalen Pakete für dieses Projekt wurden entfernt.
Für Windows gehen Sie zu node_modules dir und führen Sie dies in Powershell aus
npm uninstall (Get-ChildItem).Name
Ich habe kürzlich einen Knotenbefehl gefunden, mit dem alle Entwicklungsabhängigkeiten wie folgt deinstalliert werden können:
npm Prune --production
Wie bereits erwähnt, deinstalliert dieser Befehl nur die Entwicklungsabhängigkeitspakete. Zumindest half es mir, es nicht manuell machen zu müssen.
Eigentlich gibt es keine Option, dies zu tun. Wenn Sie Pakete von package.json
deinstallieren möchten, müssen Sie einfach npm ls
in demselben Verzeichnis ausführen, auf das package.json
angewiesen ist, und verwenden Sie npm uninstall <name>
oder npm rm <name>
für das zu entfernende Paket.
Tipp für Windows-Benutzer: Führen Sie diesen PowerShell-Befehl im node_modules
-übergeordneten Verzeichnis aus:
ls .\node_modules | % {npm uninstall $_}
// forcibly remove and reinstall all package dependencies
ren package.json package.json-bak
echo {} > package.json
npm Prune
del package.json
ren package.json-bak package.json
npm i
Dadurch wird im Wesentlichen ein gefälschtes leeres package.json erstellt, npm Prune
aufgerufen, um alles in node_modules zu entfernen, das ursprüngliche package.json wiederherzustellen und alles neu zu installieren.
Einige der anderen Lösungen sind vielleicht eleganter, aber ich vermute, dass dies schneller und erschöpfender ist. In anderen Threads, die ich gesehen habe, schlagen Leute vor, einfach das node_modules -Verzeichnis zu löschen, aber zumindest für Windows führt dies dazu, dass npm danach erstickt, weil das bin-Verzeichnis nicht mehr vorhanden ist. Vielleicht wird es unter Linux richtig restauriert, aber keine Fenster.
npm i
"npm i
" installiert nicht nur fehlende deps, sondern aktualisiert node_modules so, dass es mit der package.json übereinstimmt
Auch müssen Sie die Schleife dafür nicht ausführen.
Sie können alle Knotenmodule löschen, indem Sie nur einen einzigen Befehl verwenden: -
npm uninstall `ls -1 node_modules | tr '/\n' ' '`
PowerShell-Benutzer: foreach($package in ls node_modules){npm uninstall $package}
Vielen Dank an JustMailer