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

时间:2012-02-14 20:07:37

标签: node.js npm

是否有删除所有全局npm模块的命令?如果没有,你有什么建议?

26 个答案:

答案 0 :(得分:448)

以下命令将删除所有全局npm模块。注意:这不适用于Windows。有关正常运行的Windows版本,请参阅Ollie Bennett's Answer

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

以下是它的工作原理:

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

答案 1 :(得分:231)

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

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

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

答案 2 :(得分:174)

我试过Kai Sternad's solution,但这对我来说似乎并不完美。在deps树本身的最后awk之后留下了很多特殊符号。

所以,我想出了自己对 Kai Sternad 解决方案的修改(在cashmere's idea的帮助下):

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

npm ls -gp --depth=0可解析格式列出所有全球安装的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}'从路径中提取模块名称,形成所有全局安装模块的列表。

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

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

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

答案 3 :(得分:58)

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全局删除包

答案 4 :(得分:22)

只需切换到您的%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

How do you uninstall all dependencies listed in package.json (NPM)?

答案 5 :(得分:21)

对于那些使用 Powershell

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

清除缓存:

npm cache clear

答案 6 :(得分:12)

如果要删除已安装的所有软件包,可以使用npm -g ls命令查找它们,然后npm -g rm删除它们。

答案 7 :(得分:7)

在Windows中使用 “ C:\ Users \ username \ AppData \ Roaming”路径并手动删除npm文件夹

答案 8 :(得分:6)

如果你安装了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

答案 9 :(得分:4)

OP未指定操作系统。对于 Windows ,此脚本可用于核心本地和用户的全局模块和缓存。

我注意到 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%

答案 10 :(得分:3)

使用此代码卸载任何包:

npm rm -g <package_name>

答案 11 :(得分:2)

您做得很好。这是将建议合并为一个行代码。

npm rm -g `npm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | tr '/\n' ' '`

有什么不同?卸载将通过单个命令完成,例如:npm rm -g *** *** ***

答案 12 :(得分:1)

对于不涉及文件浏览器的更手动的方法,不关心安装在哪里,以后不太可能中断,并且 100% 跨平台兼容,并且感觉更安全因为步骤多,就用这个吧。

  • npm ls -g --depth=0
  • 复制输出
  • 粘贴到最喜欢的代码编辑器中(我使用 vsCode。很棒的多光标编辑)
  • 检查您想要保留的任何包(nodemon、yarn,仅举几例)删除这些行
  • 删除 +-- 或其他行装饰器的每个实例
  • 删除所有版本信息(例如“@2.11.4”)
  • 将所有项目放在同一行,空格分隔
  • npm uninstall -g 添加到该行的开头。
    • 我的看起来像 npm uninstall -g @angular/cli @vue/cli express-generator jest mocha typescript bindings nan nodemon yarn,但我没有在这台机器上全局安装很多软件包。
  • 复制行
  • 粘贴到终端中,如果尚未从复制/粘贴中添加,请按 Enter
  • 在终端中查找任何错误。
  • 检查 npm ls -g 以确保它完整。如果重新安装了某些东西,请冲洗并重复

其他仅 cli 的方法非常适合计算机管理员从同一个 ssh 或 Puppet 中同时为 100 台几乎相同的计算机执行某些操作。但如果你一年只做一次,甚至 5 次,这就容易多了。

答案 13 :(得分:1)

对于yarn global

nano ~/.config/yarn/global/package.json
<Manually remove all packages from package.json>
yarn global add

或者,如果您不关心package.json内的实际内容

echo {} >  ~/.config/yarn/global/package.json && yarn global add

这也适用于NPM,但我不确定NPM全局存储在哪里。

答案 14 :(得分:1)

如果你有Intellij Webstorm,你可以使用它的内置图形包管理器。

以root身份打开它并创建一个emtpy项目。转到

  

档案&gt;设置&gt;语言和框架&gt; Node.js和NPM

您将看到所有已安装的软件包。卸载很简单,您可以选择和取消选择要卸载的任何软件包,也可以选择Ctrl + a。

答案 15 :(得分:1)

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

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

     rmdir /s /q node_modules
    
  4. 希望这对Windows上的某人有所帮助

答案 16 :(得分:0)

您可以在以下位置找到所有已安装的npm软件包:

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

并删除您要删除的npm的内容。

如果未显示AppData,则表明它已隐藏,您可以转到在文件浏览器中查看并检查“隐藏”项目,然后在其中可以看到所有隐藏的文件夹。

答案 17 :(得分:0)

由于这是搜索的最佳答案,因此我将其张贴在这里,因为这是我过去用来清洁计算机交换笔记本电脑的解决方案。

cd ~/Documents # or where you keep your projects
find . -name "node_modules" -exec rm -rf '{}' +

来源:https://winsmarts.com/delete-all-node-modules-folders-recursively-on-windows-edcc9a9c079e

答案 18 :(得分:0)

这是一个更优雅的解决方案,我尝试过让npm为我完成所有工作。

# On Linux Mint 19.1 Cinnamon
# First navigate to where your global packages are installed.

$ npm root # returns /where/your/node_modules/folder/is
$ cd /where/your/node_modules/folder/is # i.e for me it was cd /home/user/.npm-packages/lib/node_modules

然后,如果您执行npm uninstallnpm remove,这些模块将被视为它们是项目的正常依赖项。完成后,它甚至会生成package-lock.json文件:

$ npm remove <package-name> # you may need sudo if it was installed using sudo  

答案 19 :(得分:0)

如果您具有Windows的MSYS:

rm -rf ${APPDATA//\\/\/}/npm

答案 20 :(得分:0)

npm README.md状态:

如果您想删除所有已安装的软件包, 那么您可以使用npm ls命令找到它们,然后npm rm 删除它们。

要删除npm 0.x留下的残留物,可以使用随附的 clean-old.sh脚本文件。您可以像这样方便地运行它:

   npm explore npm -g -- sh scripts/clean-old.sh

答案 21 :(得分:0)

在macOS中,我相信您只需删除用户目录中的.npm-global文件夹即可。

macOS用户目录中的

.npm和.npm-global文件夹:
.npm and .npm-global folders in macOS User directory

答案 22 :(得分:0)

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

答案 23 :(得分:-1)

sed solution

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

答案 24 :(得分:-4)

只需放入你的控制台:

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

它为我工作......

答案 25 :(得分:-4)

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