~/ sudo npm install -g is an antipattern
Earlier this week, I began working on my first npm package. I've published it, but only to understand how packages are distributed via npmjs.org.
I built a simple little command line tool to upload files to my server and print out the url to the resource in the console.
Since I wanted to use this command without specifying a path to the executable, I knew I had to install it globally.
Normally I would just
$ sudo npm install -g package-name
But I noticed while reading the docs that this is quite dangerous to let anyone (yes, that includes me) install code on your system with super user privileges. https://www.npmjs.org/doc/files/npm-folders.html
The Solution
$ sudo chown -R `whoami` /usr/local/lib/node_modules
This will allow you to globally edit npm packages without sudo
. i.e. npm install -g package-name
.
Update 11-3-2014
According to this stackoverflow answer, another option
for avoiding using sudo
with npm install
is to change the directory where npm installs
global packages:
$ npm config set prefix ~/npm
And add this directory to your $PATH
. Add export PATH="$PATH:$HOME/npm/bin"
to the end of your
~/.bashrc
or ~/.zshrc
file.
~/ Posted by Jesse Shawl on 2014-06-12