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
.
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:
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.grunt-cli
, Exécutez npm uninstall -g grunt-cli
. Ce problème sur le projet de gruntjs prend en charge cette procédure.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:
- si un autre utilisateur de la machine peut utiliser les packages npm globaux, ne modifiez pas la propriété de/usr/local
- https://Apple.stackexchange.com/questions/1393/are-my-permissions-for-usr-local-correct
- https://askubuntu.com/questions/261326/is-it-safe-to-chown-usr-local
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.
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
Dans certains cas, il peut être nécessaire d’utiliser la fonctionnalité "supprimer un paquet" de npm.
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!
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 :)
S'il est installé globalement, ajoutez -g
à uninstall
et vous aurez probablement besoin de Sudo
Sudo npm uninstall grunt -g