如何卸载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' ' '`
额外奖金? 它的速度更快!
这对我工作:
命令提示符或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。