npm install -g less does not work: EACCES: permission denied

Using sudo is not recommended. It may give you permission issue later.
While the above works, I am not a fan of changing folders owned by root to be writable for users, although it may only be an issue with multiple users.
To work around that, you could use a group, with ‘npm users’ but that is also more administrative overhead.
See here for the options to deal with permissions from the documentation:
https://docs.npmjs.com/getting-started/fixing-npm-permissions

I would go for option 2:

To minimize the chance of permissions errors, you can configure npm to
use a different directory. In this example, it will be a hidden
directory on your home folder.

Make a directory for global installations:

 mkdir ~/.npm-global

Configure npm to use the new directory path:

 npm config set prefix '~/.npm-global'

Open or create a ~/.profile file and add this line:

 export PATH=~/.npm-global/bin:$PATH

Back on the command line, update your system variables:

 source ~/.profile

Test: Download a package globally without using sudo.

npm install -g jshint

If still show permission error run (mac os):

sudo chown -R $USER ~/.npm-global   

This works with the default ubuntu install of:

sudo apt-get install nodejs npm

I recommend nvm if you want more flexibility in managing versions:
https://github.com/creationix/nvm

On MacOS use brew, it should work without sudo out of the box if you’re on a recent npm version.
Enjoy 🙂

Leave a Comment