我已经使用sudo npm install grunt
安装了grunt
,但现在无法删除它。
我试过了:
$ sudo npm uninstall grunt
但它给了我一个WARN
npm警告卸载未安装在/home/kuba/projects/node_modules中:"grunt-cli“
我还尝试过rm
、remove
和unlink
。和-g
选项,但这些选项提供:
npm警告卸载未安装在/usr/lib/node_modules中:"grunt“
但我仍然可以从命令行运行grunt
。
编辑
$ 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
为什么我在npm
中有2个目录?直接删除它们安全吗?
编辑器备注
这个问题是5年前在How to uninstall npm package__时提出的。这是一个非常有用的问题,很多人都喜欢这个问题,他们找到了解决问题的办法,所以我把它从最近的一个名为How to uninstall grunt package__的版本改回来了,因为它需要和其他npm
包一样的过程。
发布于 2014-03-26 07:02:04
要从项目npm
node_modules
文件夹中卸载模块,请运行:
npm uninstall <module> --save
请注意,在运行此命令时,应从包含node_modules
文件夹的同一目录中卸载npm
模块。--save
选项还会将其从package.json
中删除
还可以通过从本地node_modules
文件夹中删除其目录来删除本地依赖项/模块安装。是的,在那里删除依赖是安全的。
要卸载全局安装的 npm
模块,请运行:
npm uninstall -g <module>
从何处运行此命令并不重要。
要安装 npm
模块,请运行:(仅供参考)
npm install <module>
...or:
npm install
(如果您的项目根目录下有一个package.json
文件)
...or:
npm install <module> --save-dev
(如果您想向依赖项添加最低版本)
关于 Grunt的一些值得注意的事情
grunt v0.4.x
was released)之前安装了grunt
stable,则您的系统中可能仍存在较旧的grunt
版本。这是因为在全球范围内安装了低于0.4.x
的grunt
版本,当升级/维护versions.grunt
和grunt-cli
是两回事时,这会带来很多痛苦。- `grunt` (without the "cli") is usually installed at the project level (when listed as a `devDependency` in `package.json`) by running `npm install`. That's also known as a _local installation_.
- `grunt-cli` is the underlying foundation on which local versions of `grunt` run in different projects/folders. It _can_ be installed locally, but is more useful when installed globally, once.
grunt
仅在本地安装(通过运行npm install grunt
)。最好(通过运行npm install -g grunt-cli
)全局安装grunt-cli
。grunt-cli
官方npm
页面still warns against全局安装grunt
(不带cli)。grunt-cli
,请运行npm uninstall -g grunt-cli
。通过运行npm install -g grunt
).,This issue on gruntjs的项目支持this procedure.
grunt
globallynpm
sudo
和上的
sudo
与npm
的配合不是很好。只有在必要的时候才使用它。下面是两个关于使用它的优点和缺点的引文:
引用艾萨克·施卢伊特在他的Introduction to npm文章中的话:
我强烈建议您不要使用sudo进行包管理!包可以运行任意脚本,这使得safe包管理器命令像电锯理发一样安全。当然,它很快,而且肯定会穿过任何障碍,但你可能真的希望障碍留在那里。
我建议改为这样做一次:
sudo chown -R $USER /usr/local
这会将您的用户帐户设置为/usr/local目录的所有者,这样您就可以在其中发出普通命令。这样,在安装node或发出npm命令时就不必使用sudo了。
这样要好得多。毕竟,/usr/local应该是您安装的内容。
Andrei Karpushonak提到的另一个问题
将/usr/local的所有权更改为当前用户存在某些安全问题和功能限制:
如果机器上有其他用户可以使用全局npm包,请不要更改/usr/local
的所有权(
话虽如此,如果你想在不使用sudo的情况下安装全局模块,我看不到比上面提到的更好的解决方案(从实用的角度来看)。安全性与易用性是一个非常广泛的话题,没有简单的答案--它只取决于你的需求。
发布于 2016-01-29 19:55:59
同样的事情也发生在我身上。论“做”
which grunt
我得到了路径/usr/local/bin/。这里面有个文件夹的声音。但在运行命令时(甚至在路径/usr/local/bin/中):
sudo npm uninstall -g grunt
收到未安装卸载的警告
解决方案:原来我是使用命令安装的
sudo npm install -g grunt-cli
在尝试删除时,只需输入grunt
所以一旦我跑起来
sudo npm unistall -g grunt-cli
格伦特被除名了。
尽管您已经提到过,您运行
sudo npm install grunt
但是仍然要检查你是否也在犯同样的错误,并用grunt-cli运行它
发布于 2015-07-21 05:10:19
在某些情况下,可能需要使用npm的“删除包”功能。
描述
此操作将卸载程序包,并完全删除为其安装的所有npm。
在您的第三个代码块中,您发布了以下消息:
npm WARN uninstall not installed in /home/kuba/projects/node_modules: "grunt-cli"
我发现使用
which grunt
或者
whereis grunt
CLI/控制台中的命令提供的输出不完整且令人困惑。
这两个命令都将返回grunt-cli安装的路径,但只需将其返回为grunt。
也使用,
which grunt-cli
或者
whereis grunt-cli
无法将任何输出返回到CLI控制台。我相信这是npm的命名空间问题/特性。
我也遇到过这样的情况,我无法使用上面其他贡献者推荐的npm的卸载功能来卸载grunt cli。
对我来说唯一有效的方法是使用npm remove函数,程序的全名是,如下所示。
npm rm -g grunt-cli
这应该会将以下内容返回到您的控制台。
unbuild grunt-cli@#.##.#
祝好运!
https://stackoverflow.com/questions/22642655
复制相似问题