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


当前回答

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

C:\用户\用户名\应用数据\漫游\npm

您可以通过在资源管理器、运行提示符或开始菜单中键入%appdata%/npm快速到达那里。

其他回答

你都做得很好。这是将建议合并到一行代码中。

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

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

对于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%

下面的命令删除所有全局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全局删除所有来自前一个管道的模块

在Windows系统中,转到 “C:\Users{username}\AppData\Roaming”目录并手动删除npm文件夹

Windows:

rmdir /s /q "%appdata%/npm"