EhevuTov
EhevuTov

Reputation: 20463

Command to remove all npm modules globally

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

Upvotes: 470

Views: 631394

Answers (30)

pvsr
pvsr

Reputation: 11

Try this and tell me what you think

npx npkill  

Upvotes: 1

Kaffu
Kaffu

Reputation: 447

If you're using NVM for Windows, you need to delete all the modules that you don't want inside node_modules of the Node.js with the version that contains the global modules you want to remove. Do not remove corepack and npm packages as they are necessary for Node.js.

The folder can be located in:

  • %USERPROFILE%\.nvm\{version}\node_modules.

    • %USERPROFILE% is your user folder.
    • {version} is the version of Node.js where you want to delete its global modules.

    Example: C:\Users\Cappuccino\.nvm\19.8.1\node_modules.

  • {installationPath}\{version}\node_modules.

    • {installationPath} is where you have installed NVM for Windows.
    • {version} is the version of Node.js where you want to delete its global modules. Example: D:\Programs\NVM\v19.8.1\node_modules.

Upvotes: 0

Kezai
Kezai

Reputation: 1

sudo npm uninstall npm -g

Or, if that fails, get the npm source code, and do:

sudo make uninstall

To remove everything npm-related manually:

rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/npm*

Upvotes: 0

Palak Jain
Palak Jain

Reputation: 683

npm list -g

will show you the location of globally installed packages.

If you want to output them to a file:
npm list -g > ~/Desktop/npmoutputs.txt

npm rm -g

will remove them

Upvotes: 1

Minh Nguyễn
Minh Nguyễn

Reputation: 63

For Windows:

rmdir /s /q "%appdata%/npm"

Upvotes: 2

mzonerz
mzonerz

Reputation: 1250

Simply use below for MAC,

sudo rm -rf /usr/local/{bin/{node,npm},lib/node_modules/npm,lib/node,share/man//node.}

Upvotes: 1

RoboticRenaissance
RoboticRenaissance

Reputation: 1187

For a more manual approach that doesn't involve an file explorers, doesn't care where the installation is, is very unlikely to break at a later date, and is 100% cross-platform compatible, and feels a lot safer because of the extra steps, use this one.

  • 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

The other cli-only approaches are great for computer administrators doing something for 100 near-identical computers at once from the same ssh, or maybe a Puppet thing. But if you're only doing this once, or even 5 times over the course of a year, this is much easier.

Upvotes: 3

user13506524
user13506524

Reputation:

In macOS, I believe you can simply delete the .npm-global folder in your User directory.

.npm and .npm-global folders in macOS User directory:
.npm and .npm-global folders in macOS User directory

Upvotes: 0

scripter
scripter

Reputation: 115

The npm README.md states:

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

To remove cruft left behind by npm 0.x, you can use the included clean-old.sh script file. You can run it conveniently like this:

   npm explore npm -g -- sh scripts/clean-old.sh

Upvotes: 0

mekb
mekb

Reputation: 594

If you have have MSYS for Windows:

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

Upvotes: 0

Ollie Bennett
Ollie Bennett

Reputation: 4484

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 there quickly by typing %appdata%/npm in either the explorer, run prompt, or from the start menu.

Upvotes: 333

IskandarG
IskandarG

Reputation: 333

Here is a more elegant solution that I tried where I let npm do all the work for me.

# 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

Then if you do npm uninstall or npm remove these modules will be treated as if they were normal dependencies of a project. It even generates a package-lock.json file when it is done:

$ npm remove <package-name> # you may need sudo if it was installed using sudo  

Upvotes: 0

Polv
Polv

Reputation: 2208

For yarn global

nano ~/.config/yarn/global/package.json
<Manually remove all packages from package.json>
yarn global add

Or, if you don't care about what is actually inside package.json

echo {} >  ~/.config/yarn/global/package.json && yarn global add

This should apply to NPM too, but I am not exactly sure where NPM global is stored.

Upvotes: 5

Giwan
Giwan

Reputation: 1590

Since this is the top answer in search I'm posting this here as it was the solution I used in the past to clean the computer switching laptops.

cd ~/Documents # or where you keep your projects
find . -name "node_modules" -exec rm -rf '{}' +

source: https://winsmarts.com/delete-all-node-modules-folders-recursively-on-windows-edcc9a9c079e

Upvotes: 0

Sachin
Sachin

Reputation: 1425

You can locate your all installed npm packages at the location:

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

and delete the content of npm which you want to remove.

If AppData is not showing, it means it is hidden and you can go to View in file explorer and checked the Hidden items then there you can see all the hidden folders.

Upvotes: 2

pradeep karunathilaka
pradeep karunathilaka

Reputation: 656

in windows go to "C:\Users{username}\AppData\Roaming" directory and manually remove npm folder

Upvotes: 20

FDisk
FDisk

Reputation: 9416

All you done good job. This is combined suggestions in to one line code.

npm rm -g `npm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | tr '/\n' ' '`

What is different? Uninstall will be done in single command like: npm rm -g *** *** ***

Upvotes: 6

George Shalvashvili
George Shalvashvili

Reputation: 1560

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.

Upvotes: 1

bvj
bvj

Reputation: 3392

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%

Upvotes: 5

eush77
eush77

Reputation: 4088

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

Upvotes: 17

Kai Sternad
Kai Sternad

Reputation: 22830

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

Upvotes: 604

busterkika
busterkika

Reputation: 3

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...

Upvotes: -5

jedmao
jedmao

Reputation: 10502

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)?

Upvotes: 26

Kedar Vaidya
Kedar Vaidya

Reputation: 678

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

Upvotes: 32

Leonid Beschastny
Leonid Beschastny

Reputation: 51440

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.

Upvotes: 185

Anjum....
Anjum....

Reputation: 4204

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

Upvotes: 1

user1452840
user1452840

Reputation: 221

Use this code to uninstall any package:

npm rm -g <package_name>

Upvotes: 0

cashmere
cashmere

Reputation: 2831

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

Upvotes: 81

koola
koola

Reputation: 1734

sed solution

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

Upvotes: -1

rxw
rxw

Reputation: 2497

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

Upvotes: 0

Related Questions