web-dev-qa-db-fra.com

Comment désinstaller le paquet npm?

J'ai installé grunt en utilisant Sudo npm install grunt et maintenant je ne peux pas l'enlever.

J'ai essayé:

$ Sudo npm uninstall grunt

Mais cela me donne un WARN:

npm WARN uninstall not installed in /home/kuba/projects/node_modules: "grunt-cli"

J'ai aussi essayé rm, remove et unlink. et -g _ options, mais celles-ci donnent:

npm WARN uninstall not installed in /usr/lib/node_modules: "grunt"

Mais je peux toujours exécuter grunt à partir de la ligne de commande.

ÉDITER :

$ whereis grunt
grunt: /usr/local/bin/grunt
$ file /usr/local/bin/grunt
/usr/local/bin/grunt: symbolic link to `../lib/node_modules/grunt/bin/grunt'
$ ls /usr/local/lib/node_modules
grunt jshint
$ ls /usr/lib/node_modules
bower  csslint  devtools-terminal  npm  plato

Pourquoi j'ai 2 répertoires avec npm? Est-il prudent de simplement les supprimer?

NOTE DE L'ÉDITEUR:

Cette question a été posée il y a plus de 5 ans sous le pseudonyme Comment désinstaller le paquet npm. C’est une question très utile, qui a été favorisée par de nombreux utilisateurs, qui ont trouvé une solution à leur problème. Je la remédie donc à une édition récente qui l’appelait Comment désinstaller le paquet grunt, car elle requiert la même procédure comme n'importe quel autre package npm.

57
jcubic

Pour désinstaller un module npm du projet node_modules, Exécutez:

npm uninstall <module> --save

Notez que les modules npm doivent être désinstallés à partir du même répertoire que le dossier node_modules Lors de l'exécution de cette commande. L’option --save L’enlèvera également de votre package.json

Il est également possible de supprimer une installation de dépendance/module locale en supprimant son répertoire du dossier local node_modules. Oui, vous pouvez supprimer les dépendances en toute sécurité.

Pour désinstaller un module npm installé globalement, exécutez:

npm uninstall -g <module>

Peu importe où vous exécutez cette commande.

Pour installer un module npm, exécutez: (uniquement à titre de référence)

npm install <module>

...ou:

npm install (S'il existe un fichier package.json À la racine de votre projet)

...ou:

npm install <module> --save-dev (Si vous voulez ajouter une version minimale à la dépendance)

Bonnes choses à savoir sur Grunt:

  • Si vous avez installé grunt stable avant le 18 février 2013 ( le jour où grunt v0.4.x A été publié ), il se peut que vous ayez un ancien grunt version toujours en attente dans votre système. En effet, grunt versions inférieures à 0.4.x Ont été installées globalement, ce qui a causé beaucoup de difficultés lors de la mise à niveau/de la maintenance de versions.
  • grunt et grunt-cli sont deux choses différentes.

    • grunt (sans le "cli") est généralement installé au niveau du projet (lorsqu'il est répertorié en tant que devDependency dans package.json) en exécutant npm install. C'est également connu sous le nom d'installation installation locale.
    • grunt-cli Est la fondation sous-jacente sur laquelle les versions locales de grunt sont exécutées dans différents projets/dossiers. Il peut être installé localement, mais est plus utile une fois installé globalement.
  • grunt est uniquement installé localement (en exécutant npm install grunt).

  • grunt-cli Est de préférence installé globalement (en exécutant npm install -g grunt-cli). grunt-cli Official npm page met toujours en garde contre l'installation degrunt (sans le cli) globalement.
  • Si vous souhaitez désinstaller l'installation globale de grunt-cli, Exécutez npm uninstall -g grunt-cli. Ce problème sur le projet de gruntjs prend en charge cette procédure.
  • N'installez jamais grunt globalement (en exécutant npm install -g grunt).

Sur npm et Sudo

Sudo ne fonctionne pas bien avec npm. Utilisez-le uniquement si vous devez. Vous trouverez ci-dessous deux citations sur les avantages et les inconvénients de son utilisation:

Citant Isaac Z. Schlueter sur son Introduction à l'article de npm :

Je vous encourage fortement à ne pas gérer les paquets avec Sudo! Les paquetages peuvent exécuter des scripts arbitraires, ce qui rend une commande de gestionnaire de paquet aussi sûre qu'une coupe à la tronçonneuse. Bien sûr, il est rapide et va certainement éliminer tous les obstacles, mais vous voudrez peut-être que cet obstacle y reste.

Je recommande de faire cela une fois à la place:

Sudo chown -R $USER /usr/local

Cela définit votre compte utilisateur en tant que propriétaire du répertoire/usr/local, afin que vous puissiez simplement émettre des commandes normales. Dans ce cas, vous ne devrez plus jamais utiliser Sudo lors de l’installation du noeud ou de l’émission de commandes npm.

C'est beaucoup mieux comme ça./usr/local est censé être ce que vous avez installé, après tout.

Encore une autre prise mentionnée par Andrei Karpushonak :

Il existe certaines préoccupations de sécurité et limitations fonctionnelles concernant le changement de propriété de/usr/local en utilisateur actuel:

Cela dit, si vous souhaitez installer le module global sans utiliser Sudo, je ne vois pas de meilleure solution (du point de vue pragmatique) que celle mentionnée. La sécurité par rapport à la facilité d'utilisation est un sujet très vaste, et il n'y a pas de réponse simple à cela - cela dépend de vos besoins.

100
Wallace Sidhrée

Cette même chose s'est produite avec moi. Sur faire

which grunt

J'ai le chemin/usr/local/bin /. Il y avait un dossier grognant à l'intérieur. Mais en exécutant la commande (même depuis le chemin/usr/local/bin /):

Sudo npm uninstall -g grunt

Vous avez l'avertissement désinstaller pas installé

Solution: s'avère que j'ai installé en utilisant la commande

Sudo npm install -g grunt-cli

Et tout en essayant de supprimer était juste en train de taper grunt

Donc une fois que je cours

Sudo npm unistall -g grunt-cli 

grunt a été enlevé.

Bien que vous ayez mentionné en question que vous courez

Sudo npm install grunt

Mais vérifiez quand même si vous faites aussi la même erreur et lancez-le avec grunt-cli

5
Aditi Saxena

Dans certains cas, il peut être nécessaire d’utiliser la fonctionnalité "supprimer un paquet" de npm.

npm - Supprimer un paquet

La description

"Ceci désinstalle un paquet en supprimant complètement tout ce qui est installé par npm en son nom."

Sur votre troisième bloc de code, vous avez posté ce message:

npm WARN uninstall not installed in /home/kuba/projects/node_modules: "grunt-cli"

J'ai trouvé qu'en utilisant le

which grunt 

ou la

whereis grunt 

les commandes de la CLI/console fournissent une sortie incomplète et source de confusion.

Ces deux commandes renverront le chemin de l'installation grunt-cli , mais le renverront simplement sous la forme grunt .

En utilisant également,

which grunt-cli

ou la

whereis grunt-cli

ne renvoie aucune sortie à la console CLI. Je crois qu'il s'agit d'un problème/d'une fonctionnalité d'espace de noms avec npm.

J'ai également eu une situation où je ne pouvais pas désinstaller la fonction de désinstallation de grunt-cli avec npm comme recommandé par les autres contributeurs ci-dessus.

La seule chose qui a fonctionné pour moi a été d'utiliser la fonction npm remove avec le nom complet du programme , comme illustré ci-dessous.

npm rm -g grunt-cli

Cela devrait renvoyer ce qui suit sur votre console.

unbuild grunt-cli@#.##.#

Bonne chance!

2
RunningTalus

Utilisez d'abord celui-ci

 qui grunt-cli 

Ou

 qui grognent 

Et cela vous montrera le chemin du module

Dans mon cas, c'était dans/usr/local/bin /

Une fois que je suis dans le dossier bin je viens d'écrire

 Sudo rm grunt 

Et c'était la fin :)

2
azuneca

S'il est installé globalement, ajoutez -g à uninstall et vous aurez probablement besoin de Sudo

Sudo npm uninstall grunt -g