命令全局删除所有npm模块?

是否有一个命令来删除所有全局npm模块? 如果不是,你有什么build议?

以下命令将删除所有全局npm模块。 注意:这在Windows上不起作用。 对于一个工作的Windows版本,请参阅Ollie Bennett的答案 。

npm ls -gp --depth=0 | awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}' | xargs npm -g rm 

下面是它的工作原理:

  • npm ls -gp --depth=0列出所有全局顶级模块(请参阅ls的cli文档 )
  • awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}'打印所有不是真正npm的模块(不以/npm结尾)
  • xargs npm -g rm删除全部来自上一个pipe道的所有模块

对于那些使用Windows的人来说 ,删除所有全局安装的npm包最简单的方法是删除以下内容:

C:\Users\username\AppData\Roaming\npm

您可以通过键入%appdata% (在资源pipe理器,运行提示或开始菜单中)来快速到达这里。

我尝试了凯斯特纳德的解决scheme,但对我来说似乎并不完美。 在deps树本身的最后一个awk之后还有许多特殊的符号。

所以,我提出了自己修改Kai Sternad的解决scheme(在羊绒理念的帮助下):

 npm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | grep -vE '^(npm|)$' | xargs -r npm -g rm 

npm ls -gp --depth=0可parsing格式列出所有全局安装的npm模块:

 /home/leonid/local/lib /home/leonid/local/lib/node_modules/bower /home/leonid/local/lib/node_modules/coffee-script ... 

awk -F/node_modules/ '{print $2}'从path中提取模块名称,形成所有全局安装模块的列表。

grep -vE '^(npm|)$'删除npm本身和空白行。

xargs -r npm -g rm为列表中的每个模块调用npm -g rm

Kai Sternad的解决scheme一样,它只能在* nix下工作。

 sudo npm list -g --depth=0. | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}' | sudo xargs npm remove -g 

为我工作

  • sudo npm list -g --depth=0. 列出所有安装的顶层
  • awk -F ' ' '{print $2}'除去├──
  • awk -F '@' '{print $1}'在'@'之前获取零件
  • sudo xargs npm remove -g全局删除软件包

只需切换到您的%appdata%/npm目录并运行以下…

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

编辑:这个命令打破了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

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

对于那些使用Powershell的人

 npm -gp ls --depth=0 | ForEach-Object { Get-Item $_ } | Where { $_.Name -ne 'npm' } | ForEach-Object { npm rm -g $_.Name } 

清除caching:

 npm cache clear 

如果您想删除已经安装的所有软件包,可以使用npm -g ls命令find它们,然后使用npm -g rm将其删除。

如果你安装了jq ,你甚至可以不使用grep / awk / sed:

 npm ls -g --json --depth=0 | jq -r '.dependencies|keys-["npm"]|join("\n")' | xargs npm rm -g 

在Debian上,你可以安装jq :

 sudo apt-get install jq 

操作系统未由OP指定。 对于Windows ,这个脚本可以用来加载本地和用户的全局模块和caching。

我注意到在Linux上,全局的根对于系统而不是给定的用户是真正的全局的。 因此,删除全局根对共享系统来说可能不是一个好主意。 除此之外,如果感兴趣,我可以将脚本移植到bash

对于Windows ,保存到一个cmd文件来运行。

 @ECHO OFF SETLOCAL EnableDelayedExpansion SETLOCAL EnableExtensions SET /A ecode=0 :: verify SET /P conf="About to delete all global and local npm modules and clear the npm cache. Continue (y/[n])? IF /I NOT "%conf%"=="y" ( ECHO operation aborted SET /A ecode=!ecode!+1 GOTO END ) :: wipe global and local npm root FOR %%a IN ("" "-g") DO ( :: get root path into var SET cmd=npm root %%~a FOR /f "usebackq tokens=*" %%r IN (`!cmd!`) DO (SET npm_root=%%r) :: paranoid ECHO validating module path "!npm_root!" IF "!npm_root:~-12!"=="node_modules" ( IF NOT EXIST "!npm_root!" ( ECHO npm root does not exist "!npm_root!" ) ELSE ( ECHO deleting "!npm_root!" ... :: delete RMDIR /S /Q "!npm_root!" ) ) ELSE ( ECHO suspicious npm root, ignoring "!npm_root!" ) ) :: clear the cache ECHO clearing the npm cache ... call npm cache clean :: done ECHO done :END ENDLOCAL & EXIT /b %ecode% 

使用此代码卸载任何软件包:

 npm rm -g <package_name> 

那么,如果你在Windows上,并要删除/卸载所有node_modules,那么你需要执行以下步骤。

  1. 转到Windows命令提示符
  2. 导航到node_modules目录( 不在node_modules文件夹中
  3. 键入下面的命令,并给它1-2分钟它将卸载node_module内的所有目录

      rmdir /s /q node_modules 

希望这将有助于在Windows上的一个人

 npm ls -gp | awk -F/ '/node_modules/&&!/node_modules.*node_modules/&&!/npm/{print $NF}' | xargs npm rm -g 

sed解决scheme

 npm -gp ls | sed -r '/npm$|(node_modules.*){2,}/d; s:.*/([^/]+)$:\1:g' | xargs npm rm -g 

只要把你的控制台:

sudo npm list -g –depth = 0。 | awk -F'''{print $ 2}'| awk -F'@''{print $ 1}'| sudo xargs npm删除-g

它为我工作…

这很简单: rm -rf ~/.npm