I've installed grunt
using sudo npm install grunt
and now I can't remove it.
I've tried:
$ sudo npm uninstall grunt
But it gives me a WARN
:
npm WARN uninstall not installed in /home/kuba/projects/node_modules: "grunt-cli"
I've also tried rm
, remove
and unlink
. and -g
options, but those give:
npm WARN uninstall not installed in /usr/lib/node_modules: "grunt"
But I still can run grunt
from command line.
EDIT:
$ 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
Why I have 2 directories with npm
? Is it safe to just delete them?
EDITOR NOTE:
- This question was asked over 5 years ago as How to uninstall npm package. It's been a very useful question favourited by many, who found a solution to their problem, so I'm changing it back from a recent edit that called it How to uninstall grunt package, because it requires the same procedure as any other
npm
package.*
6条答案
按热度按时间bihw5rsg1#
To uninstall a
npm
module from projectnode_modules
folder, run:npm uninstall <module> --save
Note that
npm
modules should be uninstalled from the same directory that contains thenode_modules
folder when running this command. The--save
option will also remove it from yourpackage.json
One can also remove a local dependency/module installation, by deleting its directory from the local
node_modules
folder. Yes, it's safe to delete dependencies there.To uninstall a
npm
module that was installed globally, run:npm uninstall -g <module>
It doesn't matter where you run this command from.
To install a
npm
module, run: (only meant as reference)npm install <module>
...or:
npm install
(if there's apackage.json
file at the root of your project)...or:
npm install <module> --save-dev
(if you want to add a minimum version to the dependency)Good things to know about Grunt:
grunt
stable before February 18, 2013 ( the daygrunt v0.4.x
was released ), you might have an oldergrunt
version still lingering in your system. That's becausegrunt
versions lower than0.4.x
were installed globally, which caused a lot of pain when upgrading/maintaining versions.grunt
andgrunt-cli
are two different things.grunt
(without the "cli") is usually installed at the project level (when listed as adevDependency
inpackage.json
) by runningnpm install
. That's also known as a local installation.grunt-cli
is the underlying foundation on which local versions ofgrunt
run in different projects/folders. It can be installed locally, but is more useful when installed globally, once.grunt
is only installed locally (by runningnpm install grunt
).grunt-cli
is preferably installed globally (by runningnpm install -g grunt-cli
).grunt-cli
officialnpm
page still warns against installinggrunt
(without the cli) globally.grunt-cli
, runnpm uninstall -g grunt-cli
. This issue on gruntjs 's project supports this procedure.grunt
globally (by runningnpm install -g grunt
).On
npm
andsudo
sudo
doesn't play well withnpm
. Only use it if you must. Below are two quotes on the advantages and disadvantages on its use:Quoting Isaac Z. Schlueter on his Introduction to npm article:
I strongly encourage you not to do package management with sudo! Packages can run arbitrary scripts, which makes sudoing a package manager command as safe as a chainsaw haircut. Sure, it's fast and definitely going to cut through any obstacles, but you might actually want that obstacle to stay there.
I recommend doing this once instead:
sudo chown -R $USER /usr/local
That sets your user account as the owner of the /usr/local directory, so that you can just issue normal commands in there. Then you won't ever have to use sudo when you install node or issue npm commands.
It's much better this way. /usr/local is supposed to be the stuff you installed, after all.
Yet another catch mentioned by Andrei Karpushonak :
There are certain security concerns and functionality limitations regarding changing the ownership of /usr/local to the current user:
Having said that, if you want to install global module without using sudo, I don't see any better solution (from pragmatic point of view) than mentioned. Security vs easy of use is very broad topic, and there is no easy answer for that - it just depends on your requirements.
cidc1ykv2#
This same thing happened with me. On doing
I got path /usr/local/bin/. There was a folder grunt inside this. But on running command (even from within the path /usr/local/bin/):
Got the warning uninstall not installed
Solution: turns out that I installed using command
And while trying to remove was just typing grunt.
So once I run
grunt got removed.
Although you have mention in question that you run
But still check if you are also doing the same mistake and run it with grunt-cli.
nwwlzxa73#
In some cases it may be necessary to use npm's "remove a package," feature.
npm - Remove a package
Description
"This uninstalls a package, completely removing everything npm installed on its behalf."
On your third code block, you posted this message:
I've found that using the
or the
commands in the CLI/console provides an incomplete and confusing output.
Both of these commands will return the path of the grunt-cli installation, but return this simply as grunt.
Also using,
or the
fails to return any output to the CLI console. I believe that this is a namespace issue/feature with npm.
I also had a situation where I was unable to uninstall the grunt-cli with npm's uninstall function as recommended by other contributors above.
The only thing that worked for me was using the npm remove function with the program's full name as demonstrated below.
This should return the following to your console.
Good Luck!
apeeds0o4#
Use first this one
Or
And this will show you the path to the module
In my case it was in the /usr/local/bin/
Once I got into the bin folder I just wrote
And that was the end of it :)
4sup72z85#
If it's installed globally add
-g
touninstall
and probably you will needsudo
zynd9foi6#
Running the accepted solution's commands didn't work for me. Running
which grunt
would result in/usr/local/bin/grunt
, but normal (or sudo)npm uninstall -g grunt-cli
had no effect.This is the command that finally worked for me:
Thanks to gengxuelei on github for the solution!