467 Stimmen

Befehl zum Entfernen aller npm-Module global

Gibt es einen Befehl zum Entfernen aller globalen npm-Module? Wenn nicht, was schlagen Sie vor?

603voto

Kai Sternad Punkte 21394

Der folgende Befehl entfernt alle globalen npm-Module. Hinweis: Dies funktioniert nicht unter Windows. Für eine funktionierende Windows-Version siehe Ollie Bennetts Antwort.

npm ls -gp --depth=0 | awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}' | xargs npm -g rm

So funktioniert es:

  • npm ls -gp --depth=0 listet alle globalen Top-Level-Module auf (siehe die CLI-Dokumentation für ls)
  • awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}' zeigt alle Module an, die tatsächlich nicht npm selbst sind (endet nicht mit /npm)
  • xargs npm -g rm entfernt alle globalen Module, die über die vorherige Pipe kommen

333voto

Ollie Bennett Punkte 4274

Für diejenigen, die Windows verwenden, ist der einfachste Weg, um alle global installierten npm-Pakete zu entfernen, den Inhalt von zu löschen:

C:\Benutzer\Benutzername\AppData\Roaming\npm

Sie können dort schnell hingelangen, indem Sie %appdata%/npm entweder im Explorer, im Ausführungsfenster oder über das Startmenü eingeben.

185voto

Leonid Beschastny Punkte 47348

Ich habe Kai Sternads Lösung ausprobiert, aber sie schien mir unvollkommen zu sein. Es blieben viele Sonderzeichen nach dem letzten awk aus dem Abhängigkeitsbaum selbst übrig.

Also habe ich meine eigene Modifikation von Kai Sternads Lösung (mit ein wenig Hilfe von cashmere's Idee) entwickelt:

npm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | grep -vE '^(npm|)$' | xargs -r npm -g rm

npm ls -gp --depth=0 listet alle global installierten npm-Module im auswertbaren Format auf:

/home/leonid/local/lib
/home/leonid/local/lib/node_modules/bower
/home/leonid/local/lib/node_modules/coffee-script
...

awk -F/node_modules/ '{print $2}' extrahiert Modulnamen aus den Pfaden und bildet die Liste aller global installierten Module.

grep -vE '^(npm|)$' entfernt npm selbst und Leerzeilen.

xargs -r npm -g rm ruft für jedes Modul in der Liste npm -g rm auf.

Wie die Lösung von Kai Sternad funktioniert sie nur unter *nix.

81voto

cashmere Punkte 2721
sudo npm list -g --depth=0. | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}'  | sudo xargs npm remove -g

hat für mich funktioniert

  • sudo npm list -g --depth=0. listet alle auf oberster Ebene installierten auf
  • awk -F ' ' '{print $2}' entfernt
  • awk -F '@' '{print $1}' gibt den Teil vor '@' aus
  • sudo xargs npm remove -g entfernt das Paket global

32voto

Kedar Vaidya Punkte 678

Für diejenigen, die Powershell verwenden:

npm -gp ls --depth=0 | ForEach-Object { Get-Item $_ } | Where { $_.Name -ne 'npm' } | ForEach-Object { npm rm -g $_.Name }

Um den Cache zu leeren:

npm cache clear

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X