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


当前回答

npm README。md:

如果您想删除已安装的所有软件包,请 然后您可以使用NPM ls命令来查找它们,然后NPM rm来 移除它们。 移除npm 0留下的杂物。X,你可以使用包含的 Clean-old.sh脚本文件。你可以这样方便地运行它: NPM探索NPM -g——sh scripts/clean-old.sh

其他回答

对于一种更手动的方法,它不涉及文件浏览器,不关心安装在哪里,以后不太可能崩溃,100%跨平台兼容,并且由于额外的步骤而感觉更安全,请使用这种方法。

npm ls -g --depth=0 Copy output Paste into favorite code editor (I use vsCode. Great multi-cursor editing) Check for any packages you'd like to keep (nodemon, yarn, to name a few) Remove those lines Remove every instance of +-- or other line decorators Remove all the version information (eg '@2.11.4') Put all items on same line, space separated Add npm uninstall -g to beginning of that one line. Mine looks like npm uninstall -g @angular/cli @vue/cli express-generator jest mocha typescript bindings nan nodemon yarn, but I didn't install many packages globally on this machine. Copy line Paste in terminal, hit enter if not already added from the copy/paste Look for any errors in the terminal. Check npm ls -g to make sure it's complete. If something got reinstalled, rinse and repeat

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

我尝试了凯·斯特纳德的解决方案,但对我来说似乎并不完美。在最后一个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下工作。

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

在macOS中,我相信你可以简单地删除用户目录中的.npm-global文件夹。

macOS下的.npm和.npm-global文件夹用户目录:

如果你有MSYS for Windows:

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