How do you set up npm (node package manager) without root access?
Setting npm up as the root user is straighforward and workds. Except you have to run npm commands as root (not recommended). 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
, 开发者_Go百科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.
This 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')
精彩评论