Skip to content

Instantly share code, notes, and snippets.

@Giancarlos
Created September 24, 2019 21:38
Show Gist options
  • Star 8 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Giancarlos/d087f8a9e6516716da98ad0c0f5a8f58 to your computer and use it in GitHub Desktop.
Save Giancarlos/d087f8a9e6516716da98ad0c0f5a8f58 to your computer and use it in GitHub Desktop.

Adopted from here https://topaxi.codes/use-npm-without-root-or-sudo-rights/

I'm saving this as a gist and modifying it to ensure that if the original blog post disappears it lives on somewhere.

Added some notes for Ubuntu 18.04 and similar.

Today we're going to setup our npm installation to be used without root or sudo rights.

By default, if you install packages globally with npm, npm tries to install them into a system directory (i.e. /usr/local/lib/node_modules). With the next steps, we're going to use your home directory for those files.

First we create a directory in your home directory where all the npm packages will be installed.

$ mkdir ~/.node

Tell npm where to store the globally installed packages by adding the following line to your ~/.npmrc file.

prefix = ~/.node  

Note: If the file doesn't exist, it did not for me, just create it and save those contents inside.

Add the new bin and node_modules folders to your $PATH and $NODE_PATH variables by adding the following lines to your ~/.profile file. Note: This may be your ~/.bash_profile if you're in Ubuntu.

PATH="$HOME/.node/bin:$PATH"  
NODE_PATH="$HOME/.node/lib/node_modules:$NODE_PATH"  

Optionally update the $MANPATH variable for npm packages which ship man pages. Add the following line to your ~/.profile or ~/.bash_profile file.

MANPATH="$HOME/.node/share/man:$MANPATH"  

Source the ~/.profile or ~/.bash_profile and you should be able to install and use npm packages globally with your user even without root access.

You're now set and done. Enjoy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment