命令全局删除所有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,那么你需要执行以下步骤。
- 转到Windows命令提示符
- 导航到node_modules目录( 不在node_modules文件夹中 )
-
键入下面的命令,并给它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