Command to remove all npm modules globally?

匿名 (未验证) 提交于 2019-12-03 09:02:45

问题:

Is there a command to remove all global npm modules? If not, what do you suggest?

回答1:

The following command removes all global npm modules. Note: this does not work on Windows. For a working Windows version, see Ollie Bennett's Answer.

npm ls -gp --depth=0 | awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}' | xargs npm -g rm 

Here is how it works:

  • npm ls -gp --depth=0 lists all global top level modules (see the cli documentation for ls)
  • awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}' prints all modules that are not actually npm itself (does not end with /npm)
  • xargs npm -g rm removes all modules globally that come over the previous pipe


回答2:

For those using Windows, the easiest way to remove all globally installed npm packages is to delete the contents of:

C:\Users\username\AppData\Roaming\npm

You can get here quickly by typing %appdata% (either in explorer, run prompt, or start menu).



回答3:

I tried Kai Sternad's solution but it seemed imperfect to me. There was a lot of special symbols left after the last awk from the deps tree itself.

So, I came up with my own modification of Kai Sternad's solution (with a little help from 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 lists all globally-installed npm modules in parsable format:

/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}' extracts module names from paths, forming the list of all globally-installed modules.

grep -vE '^(npm|)$' removes npm itself and blank lines.

xargs -r npm -g rm calls npm -g rm for each module in the list.

Like Kai Sternad's solution, it'll only work under *nix.



回答4:

sudo npm list -g --depth=0. | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}'  | sudo xargs npm remove -g 

worked for me

  • sudo npm list -g --depth=0. lists all top level installed
  • awk -F ' ' '{print $2}' gets rid of ├――
  • awk -F '@' '{print $1}' gets the part before '@'
  • sudo xargs npm remove -g removes the package globally


回答5:

Just switch into your %appdata%/npm directory and run the following...

for package in `ls node_modules`; do npm uninstall $package; done; 

EDIT: This command breaks with npm 3.3.6 (Node 5.0). I'm now using the following Bash command, which I've mapped to npm_uninstall_all in my .bashrc file:

npm uninstall `ls -1 node_modules | tr '/\n' ' '` 

Added bonus? it's way faster!

https://github.com/npm/npm/issues/10187

How do you uninstall all dependencies listed in package.json (NPM)?



回答6:

For those using Powershell:

npm -gp ls --depth=0 | ForEach-Object { Get-Item $_ } | Where { $_.Name -ne 'npm' } | ForEach-Object { npm rm -g $_.Name } 

To clear the cache:

npm cache clear 


回答7:

If you would like to remove all the packages that you have installed, you can use the npm -g ls command to find them, and then npm -g rm to remove them.



回答8:

If you have jq installed, you can go even without grep/awk/sed:

npm ls -g --json --depth=0 |   jq -r '.dependencies|keys-["npm"]|join("\n")' |   xargs npm rm -g 

On Debian and derived you can install jq with:

sudo apt-get install jq 


回答9:

OS not specified by OP. For Windows, this script can be used to nuke the local and the user's global modules and cache.

I noticed on linux that the global root is truly global to the system instead of the given user. So deleting the global root might not be a good idea for a shared system. That aside, I can port the script to bash if interested.

For Windows, save to a cmd file to run.

@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% 


回答10:

Use this code to uninstall any package:

npm rm -g 


回答11:

Well if you are on windows, and want to remove/uninstall all node_modules then you need to do following steps.

  1. Go to windows command prompt
  2. Navigate to node_modules directory (Not inside node_modules folder)
  3. Type below command and give it for 1-2 minutes it will uninstall all directories inside node_module

     rmdir /s /q node_modules 

Hope this will help some one on windows



回答12:

npm ls -gp | awk -F/ '/node_modules/&&!/node_modules.*node_modules/&&!/npm/{print $NF}' | xargs npm rm -g 


回答13:

sed solution

npm -gp ls | sed -r '/npm$|(node_modules.*){2,}/d; s:.*/([^/]+)$:\1:g' | xargs npm rm -g 


回答14:

if you have Intellij Webstorm you can use its built-in graphical package manager.

open it as root and create an emtpy project. go to

File > Settings > Language and Frameworks > Node.js and NPM

there you will see all the installed packages. Uninstalling is easy, you can select and deselect any package you want to uninstall, Ctrl+a woks as well.



回答15:

Just put in your console:

sudo npm list -g --depth=0. | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}' | sudo xargs npm remove -g

Its work for me...



回答16:

It's as simple as: rm -rf ~/.npm



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!