gpt4 book ai didi

gruntjs - 如何卸载npm包?

转载 作者:行者123 更新时间:2023-12-03 05:43:56 27 4
gpt4 key购买 nike

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

我已经尝试过:

$ sudo npm uninstall grunt

但它给了我一个警告:

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

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

npm WARN uninstall not installed in /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

为什么我有 2 个带有 npm 的目录?删除它们安全吗?

编者注:

这个问题是在 5 年前提出的,标题是如何卸载 npm 包。这是一个非常有用的问题,受到许多人的喜爱,他们找到了问题的解决方案,因此我将其从最近的编辑中改回,称为如何卸载 grunt 包,因为它需要相同的内容过程与任何其他 npm 包一样。

最佳答案

卸载npm项目中的模块 node_modules文件夹,运行:

npm uninstall <module> --save

请注意npm应从包含 node_modules 的同一目录中卸载模块运行此命令时的文件夹。 --save选项也会将其从您的 package.json 中删除

还可以通过从本地删除其目录来删除本地依赖项/模块安装 node_modules文件夹。是的,删除依赖项是安全的。

卸载npm全局安装的模块,运行:

npm uninstall -g <module>

从哪里运行此命令并不重要。

安装npm module, run:(仅供引用)

npm install <module>

...或:

npm install (如果项目根目录中有 package.json 文件)

...或:

npm install <module> --save-dev (如果您想向依赖项添加最低版本)

关于 Grunt 的好消息:

  • 如果您已安装grunt 2013 年 2 月 18 日之前稳定 ( the day grunt v0.4.x was released ),您可能有较旧的 grunt版本仍然存在于您的系统中。那是因为grunt低于 0.4.x 的版本全局安装,这给升级/维护版本带来了很大的痛苦。
  • gruntgrunt-cli是两个不同的东西。

    • grunt (不带“cli”)通常通过运行 devDependency 在项目级别安装(当在 package.json 中列为 npm install 时) 。这也称为本地安装
    • grunt-cligrunt 本地版本的底层基础在不同的项目/文件夹中运行。它可以在本地安装,但在全局安装一次时更有用。
  • grunt仅在本地安装(通过运行 npm install grunt )。

  • grunt-cli 最好全局安装(通过运行 npm install -g grunt-cli )。 grunt-cli官方npmstill warns against安装grunt (没有 cli)全局范围内。
  • 如果您想卸载 grunt-cli 的全局安装,运行npm uninstall -g grunt-cliThis issuegruntjs的项目支持此过程。
  • 切勿安装 grunt全局(通过运行 npm install -g grunt )。

关于 npmsudo

<强> sudonpm 配合不佳。仅在必要时才使用它。以下是关于其使用优点和缺点的两段引用:

引用Isaac Z. Schlueter关于他的Introduction to npm文章:

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.

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.

关于gruntjs - 如何卸载npm包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22642655/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com