How can I completely reverse all changes by npm in Ubuntu

The Question is similar to https://stackoverflow.com/questions/11177954/how-do-i-completely-uninstall-node-js-and-reinstall-from-beginning-mac-os-x but for Ubuntu, and mainly concerns the cleanup part.

Installation was done as usual by: sudo apt-get install node, however I later used the npm command to install multiple packages as more than one users.

How do I completely remove npm along with all libraries, packages and any other files installed by npm on my system by e.g. npm install -g @vue/cli? I would probably have to uninstall from apt, but the main question has to do with all the changes npm did.

Notes:

  1. I am on Ubuntu 20.04 LTS npm version 7.5.6 if that matters
  2. As there seems to be some fights about people uninstalling npm going on currently, please do not downvote just because I want to uninstall, I plan to reinstall :)

Edit-Reminder to future self and others: For reinstalling without sudo , a link with recipes can be found here. It is still unclear to me what's best but https://stackoverflow.com/questions/10081293/install-npm-into-home-directory-with-distribution-nodejs-package-ubuntu on the other hand there is README.md#debinstall so possibly use apt to install node, then use prefix...


Solution 1:

This will be messy ...

The simplest solution that I have found to this problem when trying to "fix" a broken development server that couldn't be formatted and rebuilt from scratch due to "management" is this:

  1. remove the globally installed packages
  2. delete the locally installed packages from the various /home directories and /root
  3. remove Node

Here's the basic process:

  1. Open Terminal (if it's not already open) or SSH into the machine (if you don't have physical access)
  2. List all globally installed packages:
    npm list -g --depth 0
    
  3. Uninstall the global packages one by one with:
    sudo npm uninstall -g <package-name>
    
    If you'd like to also do this for locally installed packages from your account, you can do this:
    npm list
    npm uninstall -S <package-name>
    
    The -S flag will also remove the reference in your package.json file
  4. Remove the following directories:
    /etc/npmrc
    /home/youruser/.npmrc
    /root/.npmrc
    ./.npmrc in any project directory next to package.json (search by using locate .npmrc)
  5. Remove the Node package:
    sudo apt remove nodejs --purge  
    sudo apt remove npm --purge  
    
  6. Finally, remove the straggling files and directories:
    sudo rm -rf /usr/local/bin/npm \ 
                /usr/local/share/man/man1/node* \
                /usr/local/lib/dtrace/node.d \
                ~/.npm \
                ~/.node-gyp \
                /opt/local/bin/node \
                /opt/local/include/node \
                /opt/local/lib/node_modules
    
    ... and the modules:
    sudo rm -rf /usr/local/lib/node*
    
    ... and the include modules:
    sudo rm -rf /usr/local/include/node*
    
    ... and the files in the local /bin:
    sudo rm -rf /usr/local/bin/node*
    
  7. Enjoy a 15-minute break, because you're done

At this point, you can reinstall Node and its package manager if you wish to start over with a clean slate.

Solution 2:

The command I use to remove all packages from npm is..

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

Failing that (and sometimes npm can get very clingy)..

sudo rm -rf /usr/local/node_modules
rm -rf ~/.npm*