如何卸载package.json(NPM)中列出的所有依赖项?

qod*_*nja 101 uninstall node.js npm

如果我在我的应用程序根目录中定义了一个package.json文件并运行npm install -g它将安装package.json,globablly中定义的所有依赖项.

但是,这似乎并没有反过来.

如果我npm uninstall -g在我的应用程序根目录中,它会抛出一个错误,并告诉我将包名称传递给它.

这不应该卸载我安装的相同软件包吗?

难道我做错了什么?

jed*_*mao 158

如果使用Bash,只需切换到包含package.json文件的文件夹并运行以下命令:

for package in `ls node_modules`; do npm uninstall $package; done;
Run Code Online (Sandbox Code Playgroud)

对于全局安装的软件包,请切换到您的%appdata%/npm文件夹(如果在Windows上)并运行相同的命令.

编辑:此命令打破npm 3.3.6(节点5.0).我现在使用以下Bash命令,我已将其映射到我的.bashrc文件中的npm_uninstall_all:

npm uninstall `ls -1 node_modules | tr '/\n' ' '`
Run Code Online (Sandbox Code Playgroud)

加奖金?它的速度更快!

https://github.com/npm/npm/issues/10187

  • 这是我以前用powershell做的事情:`foreach(ls node_modules中的$ package){npm uninstall $ package} (7认同)
  • 您发布了与“全局删除所有 npm 模块的命令?”的答案完全相同的命令。在这种情况和这种情况下,这怎么可能是合适的做法呢? (2认同)
  • @UgoRobain好问题.事实证明,一些依赖关系变得非常深刻.至少在NTFS文件系统(Windows)上,删除路径名长于某种限制的目录时会出现问题,这些虚拟目录将无法删除.幸运的是,`npm uninstall`可以解决这个问题,这就是为什么这个技巧很有用. (2认同)

小智 67

这对我有用:

命令提示符或gitbash到项目的node_modules文件夹然后执行:

npm uninstall *
Run Code Online (Sandbox Code Playgroud)

删除了该项目的所有本地包.

  • @shinzou 它没有为我删除全局安装。 (2认同)
  • 在 Mac 10.13.5 上,这会引发大量错误,如下所示 "> heapdump@0.3.9 install /Users/vikramanna/node_modules/heapdump > node-gyp 重建 CXX(target) Release/obj.target/addon/src/heapdump。 o 在 ../src/heapdump.cc:17 包含的文件中:../src/compat-inl.h:300:19: 错误:'v8::Isolate' 中没有名为 'GetCpuProfiler' 的成员返回isolate-> GetCpuProfiler()->StartProfiling(标题, record_samples);" (2认同)

Sam*_*eer 34

对于windows,请转到node_modules目录并在powershell中运行它

npm uninstall (Get-ChildItem).Name 
Run Code Online (Sandbox Code Playgroud)

  • 对我来说,这会导致错误“命令行太长”。 (2认同)

cha*_*alo 22

我最近发现了一个node命令,它允许卸载所有开发依赖项,如下所示:

npm prune --production
Run Code Online (Sandbox Code Playgroud)

正如我所提到的,此命令仅卸载开发依赖包.至少它帮助我不必手动完成.


Har*_*dar 10

另一个简单的选项是删除 node_modules 和 package-lock.json

rm -rf node_modules
rm -rf package-lock.json
Run Code Online (Sandbox Code Playgroud)

之后您可以尝试重新安装 npm 软件包

  • 感谢您的建议。我没有全球包。大多数回复都在谈论 -g 选项!我花了很长时间删除所有本地软件包,因为对 nodejs/npm 不够了解,我从几个不同的目录中进行了“npm install this-and-that”。当我使用“npm uninstall <anything>”时,“npm ls”仍然显示一些软件包。我是 shell 程序员,因此在“npm ls”输出的每个可以想象的部分上尝试了“npm uninstall”。没有人努力摆脱所有包裹。很累,但发现了这个建议并在 5 分钟内解决了我的问题。谢谢严酷。 (2认同)

y0n*_*0n1 7

Windows用户提示:从node_modules父目录中运行此PowerShell命令:

ls .\node_modules | % {npm uninstall $_}
Run Code Online (Sandbox Code Playgroud)


mee*_*eem 7

// forcibly remove and reinstall all package dependencies
ren package.json package.json-bak
echo {} > package.json
npm prune
del package.json
ren package.json-bak package.json
npm i
Run Code Online (Sandbox Code Playgroud)

这实质上创建了一个虚假的空 package.json,调用npm prune删除 node_modules 中的所有内容,恢复原始 package.json 并重新安装所有内容。

其他一些解决方案可能更优雅,但我怀疑这是更快和详尽的。在其他线程上,我看到人们建议只删除 node_modules 目录,但至少对于 Windows,这会导致 npm 之后窒息,因为 bin 目录丢失。也许在 linux 上它可以正确恢复,但不是 Windows。


Gnt*_*tem 6

其实没有选择这样做,如果你想卸载包从package.json简单地做npm ls对同一个目录package.json依赖和使用npm uninstall <name>npm rm <name>用于包要删除.

  • 我知道如何单独删除它们 - 如果有一个命令以与npm install相同的方式运行package.json文件,那就更有意义了. (7认同)

amr*_*phy 6

dependencies首先,删除其中devDependencies的所有包package.json

二、运行npm install

就这么简单。