Answers:
以下命令删除所有全局npm模块。注意:这在Windows上不起作用。有关可用的Windows版本,请参见Ollie Bennett的答案。
npm ls -gp --depth=0 | awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}' | xargs npm -g rm
下面是它的工作原理:
对于使用Windows的用户,删除所有全局安装的npm软件包的最简单方法是删除以下内容:
C:\Users\username\AppData\Roaming\npm
您可以通过输入%appdata%/npm
资源管理器,运行提示或从开始菜单快速到达那里。
%USERPROFILE%\AppData\npm
没有使用roaming
。
npm install
再次运行时遇到EINTEGRITY错误。我也必须删除我的package-lock.json
文件。
我尝试了Kai Sternad的解决方案,但对我来说似乎并不完美。awk
在deps树本身的最后一个之后,还有许多特殊符号。
因此,我想出了自己对Kai Sternad解决方案的修改(在Cashmere想法的帮助下):
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下工作。
npm
将其所有全局模块安装到同一目录中。确切位置可能有所不同,但通常是/usr/local/lib/node_modules
。
npm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | grep -vE '^(npm)$' | xargs npm -g rm
@angular/cli
)。我为其添加了另一个匹配器,awk
并且对我来说有效的命令如下所示:npm ls -gp --depth=0 | awk -F/ '/node_modules\/@/ {print $(NF-1)"/"$NF} /node_modules\/[^@]/ && !/\/npm$/ {print $NF}' | xargs npm -g rm
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
全局删除软件包npm remove UNMET
NOOP一样。
grep -v npm
这样npm本身就不会被删除:sudo npm list -g --depth=0. | grep -v npm | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}' | sudo xargs npm remove -g
对于使用Powershell的用户:
npm -gp ls --depth=0 | ForEach-Object { Get-Item $_ } | Where { $_.Name -ne 'npm' } | ForEach-Object { npm rm -g $_.Name }
清除缓存:
npm cache clear
只需切换到您的%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' ' '`
增加奖金了吗?它更快!
npm
和n
的前tr
在Windows中,转到“ C:\ Users {用户名} \ AppData \ Roaming”目录,然后手动删除npm文件夹
如果安装了jq,则即使没有grep / awk / sed也可以使用:
npm ls -g --json --depth=0 |
jq -r '.dependencies|keys-["npm"]|join("\n")' |
xargs npm rm -g
在Debian和Debian上,您可以使用以下命令安装jq:
sudo apt-get install jq
json
风格。
npm ls -g --json --depth=0 | jq -r '.dependencies|keys-["npm"]|join("\n")' | xargs sudo npm rm -g
OP未指定OS。对于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%
由于这是搜索的最佳答案,因此我将其发布在这里,因为这是我过去用来清洁计算机交换笔记本电脑的解决方案。
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
这是我尝试过的一种更优雅的解决方案,我让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 uninstall
,则npm remove
这些模块将被视为项目的正常依赖项。完成后,它甚至生成package-lock.json文件:
$ npm remove <package-name> # you may need sudo if it was installed using sudo
只需将您的控制台中:
sudo npm list -g --depth = 0。| awk -F'''{print $ 2}'| awk -F'@''{print $ 1}'| sudo xargs npm删除-g
它为我工作...
awk -F' |@' '/@/ {if ($(NF-1) != "npm") {print $(NF-1)}}'
说明:在空格或@上拆分,仅将匹配的行与@匹配,模块名称将是倒数第二个匹配($(NF-1)
),因此仅打印如果不是的话npm