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

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

但是,这似乎并没有相反的工作。

如果我在应用程序根目录下执行npm uninstall -g ,则会引发错误,并向我传递一个包名称。

不应该这样也卸载我安装的相同的包?

难道我做错了什么?

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

 for package in `ls node_modules`; do npm uninstall $package; done; 

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

编辑:这个命令打破了npm 3.3.6(节点5.0)。 我现在使用下面的Bash命令,我已经映射到我的.bashrc文件中的npm_uninstall_all:

 npm uninstall `ls -1 node_modules | tr '/\n' ' '` 

额外奖金? 它的速度更快!

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

这对我工作:

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

 npm uninstall * 

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

对于Windows转到node_modules目录,并在PowerShell中运行

 npm uninstall (Get-ChildItem).Name 

其实没有办法做到这一点,如果你想从package.json卸载软件包,只需要在package.json依赖的同一个目录下执行npm ls ,然后使用npm uninstall <name>npm rm <name>作为你想要的软件包去除。

我最近find了一个节点命令,它允许卸载所有的开发依赖,如下所示:

 npm prune --production 

正如我所说,这个命令只会卸载开发依赖包。 至less它帮助我不必手动进行。

针对Windows用户的提示:在node_modules父目录中运行以下PowerShell命令:

 ls .\node_modules | % {npm uninstall $_} 
 // 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 

这基本上创build一个假的,空的package.json,调用npm prune来移除node_modules中的所有内容,恢复原始的package.json并重新安装所有的东西。

一些其他的解决scheme可能会更优雅,但我认为这是更快,更彻底。 在其他线程上,我看到人们build议删除node_modules目录,但至less对于windows而言,这会导致npm之后窒息,因为bin目录不见了。 也许在Linux上得到正确恢复,但不是Windows。