Uninstall Node.js and install Node Version Manager (NVM)
01 April, 2019
When trying to install some npm packages globally, for example npm i gulp-cli -g
you may run into a permissions error along the lines of:
npm ERR! Error: EACCES: permission denied
A lot of answers on Stack Overflow and the like may tell you to add sudo
to your command — that magical little word that grants you super powers to do whatever you want — but with great power comes great responsibility.
Rather than messing with permissions of your global /node_modules/
folder, you can install Node Version Manager to install multiple versions of Node, but more importantly you can now install packages globally without the need to overrite permissions.
1. Make a note of your current globally installed packages.
This lists all of the top level installed packages. You’ll want to install some/all of these again once we’re done.
$ sudo npm list -g --depth=0
2. Remove Node, NMP and all top-level global packages
Once you’re ready, run this command to remove any top-level global npm packages.
$ 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.
lists all top-level installedawk -F ' ' '{print $2}'
gets rid of├──
awk -F '@' '{print $1}'
gets the part before the ‘@’sudo xargs npm remove -g
removes the package globally
3. Install Node Version Manager
Simply follow the installation instructions at github.com/creationix/nvm.
This should install Node Version Manager to ~/.nvm
and add the source line to your profile (~/.bash_profile
, ~/.zshrc
, ~/.profile
, or ~/.bashrc
).
Note: You’ll need to reload your terminal for changes to be reflected. Either Quit the app and re-launch or run source ~/.bash_profile
.
Verify that Node Version Manager is now installed.
$ nvm --version
If you get an error, you can manually set the NVM source in your profile by adding the following to your ~/.bash_profile
, ~/.zshrc
, ~/.profile
, or ~/.bashrc
file.
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
4. Reinstall Node and NPM
You can now install Node using the nvm
command. This will install the latest version.
$ nvm install node
For a specific version of node, just use the version number:
$ nvm install 10.10.0
Reload terminal again…
5. Verify all the things
Verify that you have the desired version of Node and NPM installed, and start enjoying a sudo
-less world of global npm packages. 🙌🏼
$ npm -v
$ node -v