Befehl zum globalen Entfernen aller npm-Module?

381

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

EhevuTov
quelle

Antworten:

501

Der folgende Befehl entfernt alle globalen npm-Module. Hinweis: Dies funktioniert unter Windows nicht. Eine funktionierende Windows-Version finden Sie in 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=0listet alle globalen Top-Level-Module auf (siehe die CLI-Dokumentation für ls )
  • awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}'druckt alle Module, die eigentlich nicht npm selbst sind (endet nicht mit /npm)
  • xargs npm -g rm Entfernt alle Module global, die über die vorherige Pipe kommen
Kai Sternad
quelle
3
Um nicht der awk golf-Typ zu sein, kann dies in einem einzigen awk-Befehl ohne grep ausgeführt werden: awk -F' |@' '/@/ {if ($(NF-1) != "npm") {print $(NF-1)}}' Erläuterung: Auf Leerzeichen oder @ teilen, nur Zeilen mit @ abgleichen, der Modulname ist der vorletzte match ( $(NF-1)), also nur drucken wenn nichtnpm
Fotios
28
Warnung: Die neue Version filtert das npm-Modul nicht heraus. Sie möchten diesen nicht entfernen.
Neverfox
9
Ich habe auch die neue Version ausgeführt, ohne die Kommentare zu lesen. LESEN SIE IMMER DIE KOMMENTARE. So stellen Sie NPM wieder her: curl npmjs.org/install.sh | sh
Jack Allan
12
Beeindruckend. NPM macht es nicht einfach, Dinge zu deinstallieren. Mit Bundler und Gems ist es trivial, alles zu deinstallieren. Die Tatsache, dass Sie grep verwenden müssen, ist ein schreckliches Design. Gibt es einen einfacheren Weg, dies zu tun? Wer erinnert sich tatsächlich an den in der Antwort erforderlichen Code?
Brian Lieber
15
@neverfox und andere: Behoben, npm selbst wird nicht mehr entfernt. Entschuldigung für die Unannehmlichkeiten
Kai Sternad
268

Für Benutzer von Windows ist der einfachste Weg, alle global installierten npm-Pakete zu entfernen, das Löschen des Inhalts von:

C:\Users\username\AppData\Roaming\npm

Sie können schnell dorthin gelangen, indem Sie %appdata%/npmentweder den Explorer, die Eingabeaufforderung oder das Startmenü eingeben .

Ollie Bennett
quelle
5
Danke für diesen, was ist mit npm-cache, sollte ich das auch entfernen?
Neil
2
Löschen Sie den npm-Ordner nicht, wenn er vorhanden ist
AutomatedMike
In späteren Versionen von npm scheint dies %USERPROFILE%\AppData\npmohne das verschoben zu werden roaming.
Liam
1
Ich habe alle Pakete neu installiert und bin beim npm installerneuten Ausführen auf EINTEGRITY-Fehler gestoßen . Ich musste auch meine package-lock.jsonDatei löschen .
ToastyMallows
Für diejenigen in Windows, die scoop verwenden, lautet der Pfad: C: \ Benutzer \ Benutzername \ scoop \ apps \ nodejs \ current \ bin \ node_modules
Ariel Mirra
176

Ich habe Kai Sternads Lösung ausprobiert , aber sie schien mir unvollkommen zu sein. Es gab viele spezielle Symbole nach dem letzten awkvom Deps-Baum selbst.

Also habe ich mir meine eigene Modifikation der Lösung von Kai Sternad ausgedacht (mit ein wenig Hilfe von Cashmere's Idee ):

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

npm ls -gp --depth=0listet alle global installierten npm-Module im analysierbaren 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 Pfaden und bildet die Liste aller global installierten Module.

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

xargs -r npm -g rmruft npm -g rmfür jedes Modul in der Liste auf.

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

Leonid Beschastny
quelle
1
Wo diese Dateien gespeichert sind, hasse ich diese Methode. Gibt es nicht irgendwo nur eine globale package.json?
Evan Carroll
2
@EvanCarroll Nein, es gibt keine solche Datei, aber npmalle globalen Module werden im selben Verzeichnis installiert. Der genaue Ort kann variieren, ist es aber normalerweise /usr/local/lib/node_modules.
Leonid Beschastny
3
Nur zu
Ihrer Information
11
Dieser Befehl funktioniert unter OSX und entfernt npmnpm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | grep -vE '^(npm)$' | xargs npm -g rm
real_ate
2
Dieser Befehl konnte keine Pakete mit Gültigkeitsbereich (wie @angular/cli) verarbeiten. Ich füge einen weiteren Matcher für hinzu awkund der Arbeitsbefehl für mich sieht folgendermaßen aus:npm ls -gp --depth=0 | awk -F/ '/node_modules\/@/ {print $(NF-1)"/"$NF} /node_modules\/[^@]/ && !/\/npm$/ {print $NF}' | xargs npm -g rm
Jack Q
64
sudo npm list -g --depth=0. | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}'  | sudo xargs npm remove -g

arbeitete für mich

  • sudo npm list -g --depth=0. listet alle installierten Top Level auf
  • awk -F ' ' '{print $2}' wird ├── los
  • awk -F '@' '{print $1}' bekommt das Teil vor '@'
  • sudo xargs npm remove -g Entfernt das Paket global
Kaschmir
quelle
Diese Version funktionierte am besten für mich ab Juni '14. Die einzige Ergänzung könnte darin bestehen, "UNMET" -Abhängigkeiten aus der Liste herauszufiltern, aber das ist nicht kritisch, ebenso npm remove UNMETwie NOOP.
Kangax
4
würde hinzufügen, grep -v npmdamit npm selbst nicht entfernt wird:sudo npm list -g --depth=0. | grep -v npm | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}' | sudo xargs npm remove -g
brauliobo
da geht es, deine npm!
Alles ist gut 22.
26

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 }

So leeren Sie den Cache:

npm cache clear
Kedar Vaidya
quelle
22

Wechseln Sie einfach in Ihr %appdata%/npmVerzeichnis und führen Sie Folgendes aus ...

for package in `ls node_modules`; do npm uninstall $package; done;

BEARBEITEN: Dieser Befehl bricht mit npm 3.3.6 (Knoten 5.0) ab. 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' ' '`

Bonus hinzugefügt? es ist viel schneller!

https://github.com/npm/npm/issues/10187

Wie deinstallieren Sie alle in package.json (NPM) aufgeführten Abhängigkeiten?

jedmao
quelle
Ich liebe das. Schneller und einfacher :) Ich habe gerade grep -v npmund nvor demtr
apnerve
16

Gehen Sie in Windows zum Verzeichnis "C: \ Users {Benutzername} \ AppData \ Roaming" und entfernen Sie den Ordner "npm" manuell

pradeep karunathilaka
quelle
1
Dies war für uns unter Windows hier unkompliziert / nützlich. Vielen Dank.
rob2d
14

Wenn Sie alle von Ihnen installierten Pakete entfernen möchten, können Sie sie mit dem npm -g lsBefehl suchen und anschließend npm -g rmentfernen.

Rechnung
quelle
7

Wenn Sie jq installiert haben, können Sie auch ohne grep / awk / sed gehen:

npm ls -g --json --depth=0 |
  jq -r '.dependencies|keys-["npm"]|join("\n")' |
  xargs npm rm -g

Auf Debian und abgeleitet können Sie jq installieren mit:

sudo apt-get install jq
eush77
quelle
Dies ist eine solide Antwort mit einem Apropos- jsonStil.
Richard Ayotte
Wenn Sudo benötigt wird, dann:npm ls -g --json --depth=0 | jq -r '.dependencies|keys-["npm"]|join("\n")' | xargs sudo npm rm -g
Roger
5

Betriebssystem nicht von OP angegeben. Unter Windows kann dieses Skript verwendet werden, um die lokalen und globalen Module und den Cache des Benutzers zu zerstören.

Ich habe unter Linux festgestellt, dass der globale Stamm für das System wirklich global ist und nicht für den angegebenen Benutzer. Das Löschen des globalen Stamms ist daher möglicherweise keine gute Idee für ein gemeinsam genutztes System. Abgesehen davon kann ich das Skript bei Interesse auf Bash portieren .

Zum Speichern Windows in einer Cmd-Datei, um sie auszuführen.

@ECHO OFF
SETLOCAL EnableDelayedExpansion 
SETLOCAL EnableExtensions

SET /A ecode=0

:: verify
SET /P conf="About to delete all global and local npm modules and clear the npm cache. Continue (y/[n])?
IF /I NOT "%conf%"=="y" (
  ECHO operation aborted
  SET /A ecode=!ecode!+1
  GOTO END
)

:: wipe global and local npm root
FOR %%a IN ("" "-g") DO (

  :: get root path into var
  SET cmd=npm root %%~a
  FOR /f "usebackq tokens=*" %%r IN (`!cmd!`) DO (SET npm_root=%%r)

  :: paranoid
  ECHO validating module path "!npm_root!"
  IF "!npm_root:~-12!"=="node_modules" (
    IF NOT EXIST "!npm_root!" (
      ECHO npm root does not exist "!npm_root!"
    ) ELSE (
      ECHO deleting "!npm_root!" ...
      :: delete
      RMDIR /S /Q "!npm_root!"
    )
  ) ELSE (
      ECHO suspicious npm root, ignoring "!npm_root!"
  )
)

:: clear the cache
ECHO clearing the npm cache ...
call npm cache clean

:: done
ECHO done

:END

ENDLOCAL & EXIT /b %ecode%
bvj
quelle
3

Verwenden Sie diesen Code, um ein Paket zu deinstallieren:

npm rm -g <package_name>
user1452840
quelle
1
Die Frage sagte eindeutig ALL, nicht einen bestimmten Paketnamen.
Polv
2

Alles was du gut gemacht hast. Dies sind Vorschläge in einem Zeilencode zusammengefasst.

npm rm -g `npm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | tr '/\n' ' '`

Was ist anders? Die Deinstallation erfolgt in einem einzigen Befehl wie:npm rm -g *** *** ***

FDisk
quelle
2

Sie können alle installierten npm-Pakete am folgenden Standort finden:

C:\Users\username\AppData\Roaming\npm

und löschen Sie den Inhalt von npm, den Sie entfernen möchten.

Wenn AppData nicht angezeigt wird, bedeutet dies, dass es ausgeblendet ist. Sie können im Datei-Explorer zur Ansicht gehen und die ausgeblendeten Elemente aktivieren. Dort werden alle ausgeblendeten Ordner angezeigt.

Sachin
quelle
1

Wenn Sie unter Windows arbeiten und alle node_modules entfernen / deinstallieren möchten, müssen Sie die folgenden Schritte ausführen.

  1. Gehen Sie zur Windows-Eingabeaufforderung
  2. Navigieren Sie zum Verzeichnis node_modules ( nicht im Ordner node_modules ).
  3. Geben Sie den folgenden Befehl ein und geben Sie ihn 1-2 Minuten lang ein. Dadurch werden alle Verzeichnisse in node_module deinstalliert

     rmdir /s /q node_modules

Hoffe das hilft jemandem unter Windows

Anjum ....
quelle
1

Wenn Sie über Intellij Webstorm verfügen, können Sie den integrierten grafischen Paketmanager verwenden.

Öffnen Sie es als root und erstellen Sie ein emtpy-Projekt. gehe zu

Datei> Einstellungen> Sprache und Frameworks> Node.js und NPM

Dort sehen Sie alle installierten Pakete. Die Deinstallation ist einfach. Sie können jedes Paket, das Sie deinstallieren möchten, auswählen und die Auswahl aufheben. Strg + a Woks.

George Shalvashvili
quelle
1

Zum yarn global

nano ~/.config/yarn/global/package.json
<Manually remove all packages from package.json>
yarn global add

Oder wenn Sie sich nicht darum kümmern, was tatsächlich drin ist package.json

echo {} >  ~/.config/yarn/global/package.json && yarn global add

Dies sollte auch für NPM gelten, aber ich bin nicht genau sicher, wo NPM global gespeichert ist.

Polv
quelle
0
npm ls -gp | awk -F/ '/node_modules/&&!/node_modules.*node_modules/&&!/npm/{print $NF}' | xargs npm rm -g
rxw
quelle
0

Hier ist eine elegantere Lösung, die ich ausprobiert habe, indem ich npm die ganze Arbeit für mich erledigen ließ.

# On Linux Mint 19.1 Cinnamon
# First navigate to where your global packages are installed.

$ npm root # returns /where/your/node_modules/folder/is
$ cd /where/your/node_modules/folder/is # i.e for me it was cd /home/user/.npm-packages/lib/node_modules

Dann , wenn Sie tun npm uninstalloder npm removediese Module werden so behandelt, als ob sie normale Abhängigkeiten eines Projekts waren. Es generiert sogar eine package-lock.json-Datei, wenn es fertig ist:

$ npm remove <package-name> # you may need sudo if it was installed using sudo  
IskandarG
quelle
-1

sed Lösung

npm -gp ls | sed -r '/npm$|(node_modules.*){2,}/d; s:.*/([^/]+)$:\1:g' | xargs npm rm -g
Koola
quelle
-5

Legen Sie einfach Ihre Konsole ein:

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

Seine Arbeit für mich ...

Busterkika
quelle
1
Genaue Lösung der Lösung, die hier auf derselben Seite bereits erwähnt wurde .
ivarni