Commande pour supprimer tous les modules npm globalement?


381

Existe-t-il une commande pour supprimer tous les modules npm globaux? Sinon, que proposez-vous?

Réponses:


501

La commande suivante supprime tous les modules npm globaux. Remarque: cela ne fonctionne pas sous Windows. Pour une version Windows fonctionnelle, voir la réponse d'Ollie Bennett .

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

Voici comment cela fonctionne:

  • npm ls -gp --depth=0répertorie tous les modules globaux de premier niveau (voir la documentation cli pour ls )
  • awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}'affiche tous les modules qui ne sont pas réellement npm lui-même (ne se termine pas par /npm)
  • xargs npm -g rm supprime tous les modules globalement qui viennent sur le tube précédent

3
Pour ne pas être le golfeur awk, cela peut être fait dans une seule commande awk sans grep: awk -F' |@' '/@/ {if ($(NF-1) != "npm") {print $(NF-1)}}' Explication: diviser sur les espaces ou @, ne faire correspondre que les lignes avec @, le nom du module sera l'avant-dernier match ( $(NF-1)), donc seulement imprimer sinonnpm
Fotios

28
Attention: la nouvelle version ne filtre pas le module npm. Vous ne voulez pas supprimer celui-là.
neverfox

9
J'ai également exécuté la nouvelle version sans lire les commentaires. TOUJOURS LIRE LES COMMENTAIRES. Voici comment restaurer NPM: curl npmjs.org/install.sh | sh
Jack Allan

12
Sensationnel. NPM ne facilite pas la désinstallation de choses. Avec bundler et gems, il est trivial de tout désinstaller, le fait que vous devez utiliser grep et tel est un design horrible. Existe-t-il un moyen plus simple de procéder? Qui se souvient réellement du code requis dans la réponse?
Brian Dear

15
@neverfox et autres: corrigé, npm lui-même n'est plus supprimé. Désolé pour le dérangement
Kai Sternad

268

Pour ceux qui utilisent Windows , la façon la plus simple de supprimer tous les packages npm installés globalement est de supprimer le contenu de:

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

Vous pouvez y accéder rapidement en tapant %appdata%/npmsoit l'explorateur, soit l'invite d'exécution, soit depuis le menu Démarrer.


5
Merci pour celui-ci, qu'en est-il de npm-cache, dois-je le supprimer également?
Neil

2
ne supprimez pas le dossier npm s'il est là
AutomatedMike

Dans les versions ultérieures de npm, cela semble avoir été déplacé %USERPROFILE%\AppData\npmsans roaming.
Liam

1
Je réinstallais tous les packages, j'ai rencontré des erreurs EINTEGRITY lors de la npm installnouvelle exécution . J'ai également dû supprimer mon package-lock.jsonfichier.
ToastyMallows du

pour ceux dans Windows utilisant scoop, le chemin est: C: \ Users \ username \ scoop \ apps \ nodejs \ current \ bin \ node_modules
Ariel Mirra

176

J'ai essayé la solution de Kai Sternad mais elle me semblait imparfaite. Il y avait beaucoup de symboles spéciaux laissés après le dernier awkde l'arbre deps lui-même.

Donc, j'ai trouvé ma propre modification de la solution de Kai Sternad (avec un peu d'aide de l'idée du cachemire ):

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

npm ls -gp --depth=0répertorie tous les modules npm installés dans le monde au format analysable :

/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}' extrait les noms de modules des chemins, formant la liste de tous les modules installés à l'échelle mondiale.

grep -vE '^(npm|)$' supprime npm lui-même et les lignes vides.

xargs -r npm -g rmappelle npm -g rmpour chaque module de la liste.

Comme la solution de Kai Sternad , elle ne fonctionnera que sous * nix.


1
Où sont stockés ces fichiers, je déteste cette méthode. N'y a-t-il pas juste un package.json global quelque part?
Evan Carroll

2
@EvanCarroll Nope, il n'y a pas un tel fichier, mais npminstalle tous ses modules globaux dans le même répertoire. L'emplacement exact peut varier, mais c'est généralement le cas /usr/local/lib/node_modules.
Leonid Beschastny

3
Juste pour info, celui-ci supprime également npm
BrDaHa

11
Cette commande fonctionne sur OSX et ne supprime pas npmnpm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | grep -vE '^(npm)$' | xargs npm -g rm
real_ate

2
Cette commande n'a pas réussi à gérer le package de portée (comme @angular/cli). J'ajoute un autre match pour awket la commande de travail pour moi ressemble à ceci: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

travaillé pour moi

  • sudo npm list -g --depth=0. répertorie tous les niveaux supérieurs installés
  • awk -F ' ' '{print $2}' se débarrasse de ├──
  • awk -F '@' '{print $1}' obtient la partie avant '@'
  • sudo xargs npm remove -g supprime le package globalement

Cette version a fonctionné le mieux pour moi en juin '14. Le seul ajout pourrait être de filtrer les dépendances "UNMET" de la liste, mais ce n'est pas critique, npm remove UNMETtout comme NOOP.
kangax

4
ajouterait grep -v npmpour que npm lui-même ne soit pas supprimé:sudo npm list -g --depth=0. | grep -v npm | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}' | sudo xargs npm remove -g
brauliobo

ça y est, votre npm!
Tous les

26

Pour ceux qui utilisent Powershell :

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

Pour vider le cache:

npm cache clear

22

Passez simplement dans votre %appdata%/npmrépertoire et exécutez ce qui suit ...

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

EDIT: Cette commande rompt avec npm 3.3.6 (Node 5.0). J'utilise maintenant la commande Bash suivante, que j'ai mappée à npm_uninstall_all dans mon fichier .bashrc:

npm uninstall `ls -1 node_modules | tr '/\n' ' '`

Bonus supplémentaire? c'est beaucoup plus rapide!

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

Comment désinstaller toutes les dépendances répertoriées dans package.json (NPM)?


Aime ça. Plus rapide et simple :) Je viens d'utiliser grep -v npmet navant letr
apnerve

16

dans Windows, allez dans le répertoire "C: \ Users {username} \ AppData \ Roaming" et supprimez manuellement le dossier npm


1
C'était simple / utile pour nous sur Windows ici. Merci.
rob2d

14

Si vous souhaitez supprimer tous les packages que vous avez installés, vous pouvez utiliser la npm -g lscommande pour les trouver, puis npm -g rmpour les supprimer.


7

Si jq est installé, vous pouvez aller même sans grep / awk / sed:

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

Sur Debian et dérivé, vous pouvez installer jq avec:

sudo apt-get install jq

C'est une réponse solide avec un jsonstyle apropos .
Richard Ayotte

Si sudo est requis alors:npm ls -g --json --depth=0 | jq -r '.dependencies|keys-["npm"]|join("\n")' | xargs sudo npm rm -g
Roger

5

OS non spécifié par OP. Pour Windows , ce script peut être utilisé pour neutraliser les modules locaux et globaux et le cache de l'utilisateur.

J'ai remarqué sur Linux que la racine globale est vraiment globale pour le système au lieu de l'utilisateur donné. La suppression de la racine globale pourrait donc ne pas être une bonne idée pour un système partagé. Cela mis à part, je peux porter le script sur bash si cela m'intéresse.

Pour Windows , enregistrez-le dans un fichier cmd pour l'exécuter.

@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%

3

Utilisez ce code pour désinstaller n'importe quel package:

npm rm -g <package_name>

1
La question disait clairement TOUS, pas un nom de package spécifique.
Polv

2

Tout ce que vous avez fait du bon travail. Il s'agit de suggestions combinées dans un code de ligne.

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

Qu'est-ce qui est différent? La désinstallation se fera en une seule commande comme:npm rm -g *** *** ***


2

Vous pouvez localiser tous vos packages npm installés à l'emplacement:

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

et supprimez le contenu de npm que vous souhaitez supprimer.

Si AppData ne s'affiche pas, cela signifie qu'il est masqué et vous pouvez aller dans Afficher dans l'explorateur de fichiers et vérifier les éléments cachés, puis vous pouvez voir tous les dossiers cachés.


1

Eh bien, si vous êtes sous Windows et que vous souhaitez supprimer / désinstaller tous les modules node_modules, vous devez suivre les étapes suivantes.

  1. Accédez à l'invite de commande Windows
  2. Accédez au répertoire node_modules ( pas dans le dossier node_modules )
  3. Tapez la commande ci-dessous et donnez-lui pendant 1-2 minutes, il désinstallera tous les répertoires à l'intérieur de node_module

     rmdir /s /q node_modules

J'espère que cela aidera quelqu'un sur Windows


1

si vous avez Intellij Webstorm, vous pouvez utiliser son gestionnaire de packages graphiques intégré.

ouvrez-le en tant que root et créez un projet emtpy. aller à

Fichier> Paramètres> Langue et cadres> Node.js et NPM

vous y verrez tous les packages installés. La désinstallation est facile, vous pouvez sélectionner et désélectionner n'importe quel package que vous souhaitez désinstaller, Ctrl + a woks également.


1

Pour yarn global

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

Ou, si vous ne vous souciez pas de ce qui se trouve réellement à l'intérieur package.json

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

Cela devrait également s'appliquer à NPM, mais je ne sais pas exactement où NPM global est stocké.


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


0

Voici une solution plus élégante que j'ai essayée où je laisse npm faire tout le travail pour moi.

# 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

Ensuite , si vous le faites npm uninstallou npm removeces modules seront traitées comme si elles étaient des dépendances normales d'un projet. Il génère même un fichier package-lock.json lorsqu'il est terminé:

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

-1

solution sed

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

-5

Mettez simplement dans votre console:

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

Son travail pour moi ...


1
Copte exacte de solution déjà mentionnée ici , sur cette même page.
ivarni
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.