448 votes

Commande pour supprimer tous les modules du Musée dans le monde ?

Y at-il une commande pour supprimer tous les modules de la NGP global ? Si ce n’est pas le cas, que me Suggérez-vous ?

582voto

Kai Sternad Points 7676

Cela supprime tous npm modules à l'échelle mondiale:

npm -g ls | grep -v 'npm@' | awk '/@/ {print $2}' | awk -F@ '{print $1}' | xargs npm -g rm

La commande fonctionne comme suit:

npm -g ls listes de tous les nœuds dans le monde. Cela permettra d'imprimer quelque chose comme:

usr/local/lib
└─┬ npm@1.1.1 
  ├── abbrev@1.0.3 
  ├── block-stream@0.0.4 
  ├── fast-list@1.0.2 
  ..
  • grep -v 'npm@' exclut les mnp lui-même

  • awk '/@/ {print $2}' divise toutes les lignes contenant @ par défaut sélecteur d'enregistrement (vide). Cela prend soin de l'arbre, de sorte que seules des lignes comme celles - abbrev@1.0.3 restent.

  • awk -F@ '{print $1}' divise abbrev@1.0.3 en abbrev qui $1 et 1.0.3 , qui est de 2 $(nous jeter loin).

  • xargs npm -g rm alors prend ce qui est à gauche (abbrev) et le supprime.

Remarque: cette solution ne fonctionnera que sous *nix.

Mise à jour

Solution ci-dessus ne fonctionne pas de manière fiable avec des versions plus récentes de la ngp, car la structure de l'arbre semble avoir changé. Comme Leonid Beschastny de répondre correctement points, il y a un drapeau qui imprime la sortie de l' ls commande en machine parseable forme qui est préférable et rend l'analyse beaucoup plus facile et fiable.

La mise à jour de la commande ci-dessus avec cette information, la nouvelle version de la commande pour supprimer tous les modules npm à l'échelle mondiale ressemble maintenant à ceci:

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

Cette version est inspirée par Leonid version, donc s'il vous plaît voter sa réponse.

323voto

Ollie Bennett Points 810

Pour ceux qui utilisent Windows, la meilleure façon de supprimer tous les paquets installés dans le monde du Musée est de supprimer le contenu de :

``

Vous pouvez obtenir ici rapidement en tapant `` (dans l’Explorateur, lancez rapide ou menu Démarrer).

186voto

Leonid Beschastny Points 10565

J'ai essayé Kai Sternad's solution , mais il semble imparfait pour moi. Il y avait beaucoup de symboles spéciaux à gauche après le dernier awk de la deps arbre lui-même.

Donc, je suis venu avec mon propre modification de Kai Sternad's solution:

npm ls -g -p | grep -v node_modules.*node_modules | awk -F/node_modules/ '{print $2}' | grep -vE '^(npm|)$' | xargs npm -g rm

npm ls -g -p listes de tout le monde installé mnp modules dans parseable format:

/home/leonid/local/lib
/home/leonid/local/lib/node_modules/bower
/home/leonid/local/lib/node_modules/bower/node_modules/abbrev
...

grep -v node_modules.*node_modules supprime tous les submodules à partir de la liste. Niveau supérieur uniquement deps reste après.

awk -F/node_modules/ '{print $2}' extraits module de noms de chemins d'accès, formant la liste de tous à l'échelle mondiale-les modules installés.

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

xargs npm -g rm des appels npm -g rm pour chaque module dans la liste.

Comme Kai Sternad's solution, ça ne marchera que sous *nix.

Mise à jour:

J'ai utilisé le cachemire à l'idée de supprimer vérifier les modules imbriqués. Il a l'air encore plus simple maintenant:

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

79voto

cashmere Points 943
<pre><code></code><p>a fonctionné pour moi</p><ul> <li><code></code> répertorie tous les haut niveau installé</li> <li><code></code>se débarrasse de ├──</li> <li><code></code>Obtient la partie avant "@"</li> <li><code></code>supprime le package dans le monde</li> </ul></pre>

26voto

mrjedmao Points 1655

Viens de passer dans votre `` répertoire et exécuter ce qui suit...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X