2010-09-15 81 views
11

以root用户身份设置npm是直接的。除了你必须以root身份运行npm命令(不推荐)。所以我想我会尝试将其设置为非root用户。如何设置无root权限的npm(节点包管理器)?

据NPM文件,而无需root访问非root用户可以通过设置NPM:

  1. 创建.npmrc文件,rootbinroot,并且manroot指向用户拥有的文件夹。
  2. 然后运行安装脚本。

好的。安装很好。

但节点无法看到npm提供的软件包。

那么如何让节点知道npm提供的软件包呢? (当我以前以root身份安装npm时,我不必做任何事情)。 我可以在节点内设置require.paths,或者设置NODE_PATH环境变量,但是要什么?

谢谢。

+0

现在没有npm与节点?我从来没有必要以root身份运行npm commans,除非我使用-g ... – tjameson 2012-11-17 00:44:46

回答

5

通过一点点的探索,看来你可以:

  1. 设置你的NODE_PATH到任何NPM的根目录,或
  2. 而在节点,调用require.paths.push('path_to_npm_root')
+0

如果您想从repl中调试它,请参阅http://github.com/ry/node/issues/封闭#问题/ 303 – keturn 2010-09-27 18:06:13

4

这个工作对me:

  1. Make a ~/.node个文件夹

    mkdir ~/.node 
    
  2. 编辑~/.npmrc并添加行

    prefix = ~/.node 
    
  3. 编辑您的~/.profile~/.bash_profile并添加这些行

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

现在我可以做的事情一样npm -g install http-server它会插入高至~/.node没有根。有了这个,当我输入http-server时,它就会运行。