首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何卸载npm包?

如何卸载npm包?
EN

Stack Overflow用户
提问于 2014-03-26 01:58:09
回答 5查看 107K关注 0票数 69

我已经使用sudo npm install grunt安装了grunt,但现在无法删除它。

我试过了:

代码语言:javascript
复制
$ sudo npm uninstall grunt

但它给了我一个WARN

npm警告卸载未安装在/home/kuba/projects/node_modules中:"grunt-cli“

我还尝试过rmremoveunlink。和-g选项,但这些选项提供:

npm警告卸载未安装在/usr/lib/node_modules中:"grunt“

但我仍然可以从命令行运行grunt

编辑

代码语言:javascript
复制
$ 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包一样的过程。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 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的一些值得注意的事情

  • 如果您在2013年2月18日(the day grunt v0.4.x was released)之前安装了grunt stable,则您的系统中可能仍存在较旧的grunt版本。这是因为在全球范围内安装了低于0.4.xgrunt版本,当升级/维护versions.
  • gruntgrunt-cli是两回事时,这会带来很多痛苦。

代码语言:javascript
复制
- `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-cligrunt-cli官方npm页面still warns against全局安装grunt (不带cli)。
  • 如果您想卸载全局安装的grunt-cli,请运行npm uninstall -g grunt-cli。通过运行npm install -g grunt).

This issue on gruntjs的项目支持this procedure.

  • Never install grunt globally

npm sudo和上的

sudonpm的配合不是很好。只有在必要的时候才使用它。下面是两个关于使用它的优点和缺点的引文:

引用艾萨克·施卢伊特在他的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的情况下安装全局模块,我看不到比上面提到的更好的解决方案(从实用的角度来看)。安全性与易用性是一个非常广泛的话题,没有简单的答案--它只取决于你的需求。

票数 115
EN

Stack Overflow用户

发布于 2016-01-29 19:55:59

同样的事情也发生在我身上。论“做”

代码语言:javascript
复制
which grunt

我得到了路径/usr/local/bin/。这里面有个文件夹的声音。但在运行命令时(甚至在路径/usr/local/bin/中):

代码语言:javascript
复制
sudo npm uninstall -g grunt

收到未安装卸载的警告

解决方案:原来我是使用命令安装的

代码语言:javascript
复制
sudo npm install -g grunt-cli

在尝试删除时,只需输入grunt

所以一旦我跑起来

代码语言:javascript
复制
sudo npm unistall -g grunt-cli 

格伦特被除名了。

尽管您已经提到过,您运行

代码语言:javascript
复制
sudo npm install grunt

但是仍然要检查你是否也在犯同样的错误,并用grunt-cli运行它

票数 6
EN

Stack Overflow用户

发布于 2015-07-21 05:10:19

在某些情况下,可能需要使用npm的“删除包”功能。

npm - Remove a package

描述

此操作将卸载程序包,并完全删除为其安装的所有npm。

在您的第三个代码块中,您发布了以下消息:

代码语言:javascript
复制
npm WARN uninstall not installed in /home/kuba/projects/node_modules: "grunt-cli"

我发现使用

代码语言:javascript
复制
which grunt 

或者

代码语言:javascript
复制
whereis grunt 

CLI/控制台中的命令提供的输出不完整且令人困惑。

这两个命令都将返回grunt-cli安装的路径,但只需将其返回为grunt

也使用,

代码语言:javascript
复制
which grunt-cli

或者

代码语言:javascript
复制
whereis grunt-cli

无法将任何输出返回到CLI控制台。我相信这是npm的命名空间问题/特性。

我也遇到过这样的情况,我无法使用上面其他贡献者推荐的npm的卸载功能来卸载grunt cli。

对我来说唯一有效的方法是使用npm remove函数,程序的全名是,如下所示。

代码语言:javascript
复制
npm rm -g grunt-cli

这应该会将以下内容返回到您的控制台。

代码语言:javascript
复制
unbuild grunt-cli@#.##.#

祝好运!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22642655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档