以下命令删除所有全局 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 列出所有全局顶级模块(参见 ls 的 cli 文档)
awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}' 打印所有实际上不是 npm 本身的模块(不以 /npm 结尾)
xargs npm -g rm 全局删除所有通过前一个管道的模块
对于使用 Windows 的用户,删除所有全局安装的 npm 包的最简单方法是删除以下内容:
C:\Users\username\AppData\Roaming\npm
您可以通过在资源管理器、运行提示符或开始菜单中键入 %appdata%/npm
快速到达那里。
npm install
时遇到了 EINTEGRITY 错误。我还必须删除我的 package-lock.json
文件。
C:\Users\[username]\node_modules
我尝试了 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 下工作。
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' ' '`
增加奖金?它的速度更快!
https://github.com/npm/npm/issues/10187
How do you uninstall all dependencies listed in package.json (NPM)?
tr
之前使用了 grep -v npm
和 n
如果您想删除所有已安装的软件包,您可以使用 npm -g ls
命令找到它们,然后使用 npm -g rm
删除它们。
在 Windows 中转到“C:\Users{username}\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 和派生系统上,您可以使用以下命令安装 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 未指定操作系统。对于 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 rm -g `npm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | tr '/\n' ' '`
有什么不同吗?卸载将在单个命令中完成,例如:npm rm -g *** *** ***
对于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 全局存储在哪里。
您可以在以下位置找到所有已安装的 npm 包:
C:\Users\username\AppData\Roaming\npm
并删除要删除的 npm 内容。
如果 AppData 未显示,则表示它已隐藏,您可以转到文件资源管理器中的查看并检查隐藏项目,然后您可以看到所有隐藏的文件夹。
对于 Windows:
rmdir /s /q "%appdata%/npm"
好吧,如果您在 Windows 上,并且想要删除/卸载所有 node_modules,那么您需要执行以下步骤。
转到 windows 命令提示符导航到 node_modules 目录(不在 node_modules 文件夹内)键入下面的命令并给它 1-2 分钟,它将卸载 node_module rmdir /s /q node_modules 内的所有目录
希望这对Windows上的一些人有所帮助
如果你有 Intellij Webstorm,你可以使用它内置的图形包管理器。
以 root 身份打开它并创建一个 emtpy 项目。去
文件 > 设置 > 语言和框架 > Node.js 和 NPM
在那里您将看到所有已安装的软件包。卸载很简单,你可以选择和取消选择任何你想卸载的包,Ctrl+a 也可以。
对于不涉及文件浏览器的更手动的方法,不关心安装在哪里,不太可能在以后中断,并且 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,但我没有在这台机器上全局安装很多包。
我的看起来像 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 次,这会容易得多。
只需在下面使用 MAC,
sudo rm -rf /usr/local/{bin/{node,npm},lib/node_modules/npm,lib/node,share/man//node.}
npm ls -gp | awk -F/ '/node_modules/&&!/node_modules.*node_modules/&&!/npm/{print $NF}' | xargs npm rm -g
使用此代码卸载任何包:
npm rm -g <package_name>
由于这是搜索中的最佳答案,因此我将其发布在这里,因为它是我过去用来清洁计算机切换笔记本电脑的解决方案。
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
如果您有适用于 Windows 的 MSYS:
rm -rf ${APPDATA//\\/\/}/npm
npm README.md 状态:
如果您想删除所有已安装的软件包,则可以使用 npm ls 命令找到它们,然后使用 npm rm 删除它们。要删除 npm 0.x 遗留的垃圾,您可以使用包含的 clean-old.sh 脚本文件。你可以像这样方便地运行它: npm explore npm -g -- sh scripts/clean-old.sh
在 macOS 中,我相信您可以简单地删除用户目录中的 .npm-global 文件夹。
https://i.stack.imgur.com/n9iD6.png
sed 解决方案
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 ' ' '{打印 $2}' | awk -F '@' '{打印 $1}' | sudo xargs npm 删除 -g
它对我的工作...
不定期副业成功案例分享
awk -F' |@' '/@/ {if ($(NF-1) != "npm") {print $(NF-1)}}'
解释:在空格或 @ 上分割,只匹配带有 @ 的行,模块名称将是倒数第二个匹配项({2 }),所以只有在不是npm
时才打印