Setting npm up as the root user is straighforward and workds. Except you have to run npm mands as root (not remended). So I thought I'd try setting it up as a non-root user.
According to npm documentation, a non-root user without root access can set up npm by:
- creating a
.npmrc
file withroot
,binroot
, andmanroot
pointing to folders that the user owns. - Then running the install script.
OK. Install was fine.
But node can't see the packages provided by npm.
So how do I make node aware of the packages provided by npm? (I didn't have to do anything when I previously installed npm as root).
I can set require.paths
within node, or set the NODE_PATH
environment variable, but to what?
Thanks.
Setting npm up as the root user is straighforward and workds. Except you have to run npm mands as root (not remended). So I thought I'd try setting it up as a non-root user.
According to npm documentation, a non-root user without root access can set up npm by:
- creating a
.npmrc
file withroot
,binroot
, andmanroot
pointing to folders that the user owns. - Then running the install script.
OK. Install was fine.
But node can't see the packages provided by npm.
So how do I make node aware of the packages provided by npm? (I didn't have to do anything when I previously installed npm as root).
I can set require.paths
within node, or set the NODE_PATH
environment variable, but to what?
Thanks.
Share Improve this question edited Apr 16, 2011 at 1:24 MPelletier 16.7k18 gold badges89 silver badges140 bronze badges asked Sep 15, 2010 at 15:06 Mark BolusmjakMark Bolusmjak 24.4k10 gold badges76 silver badges131 bronze badges 1- Doesn't npm e with node now? I've never had to run npm mans as root unless I'm using -g... – beatgammit Commented Nov 17, 2012 at 0:44
2 Answers
Reset to default 7This worked for me:
Make a
~/.node
foldermkdir ~/.node
Edit
~/.npmrc
and add the lineprefix = ~/.node
Edit your
~/.profile
or~/.bash_profile
and add these linesPATH="$HOME/.node/bin:$PATH" NODE_PATH="$HOME/.node/lib/node_modules:$NODE_PATH"
Now I can do things like npm -g install http-server
and it will install to ~/.node
without root. With this in place, when I then type http-server
, it runs.
Through a little exploration, it seems you can either:
- set your
NODE_PATH
to whatever npm's root directory is, or - while in node, invoke
require.paths.push('path_to_npm_root')