如何在没有root访问权限的情况下设置npm(节点包管理器)?

z5h*_*z5h 11 javascript node.js npm

设置npm为root用户是直接的并且工作.除非您必须以root身份运行npm命令(不推荐).所以我想我会尝试将其设置为非root用户.

根据npm文档,没有root访问权限的非root用户可以通过以下方式设置npm:

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

好.安装很好.

但节点无法看到npm提供的包.

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

谢谢.

z5h*_*z5h 5

通过一点探索,你似乎可以:

  1. 将你设置NODE_PATH为npm的根目录,或者
  2. 在节点中,调用 require.paths.push('path_to_npm_root')


gma*_*man 5

这对我有用:

  1. 制作~/.node文件夹

    mkdir ~/.node
    
    Run Code Online (Sandbox Code Playgroud)
  2. 编辑~/.npmrc并添加行

    prefix = ~/.node
    
    Run Code Online (Sandbox Code Playgroud)
  3. 编辑您的~/.profile~/.bash_profile并添加这些行

    PATH="$HOME/.node/bin:$PATH"
    NODE_PATH="$HOME/.node/lib/node_modules:$NODE_PATH"
    
    Run Code Online (Sandbox Code Playgroud)

现在我可以做这样的事情npm -g install http-server,它会在~/.node没有 root 的情况下安装。有了这个,当我输入时http-server,它就会运行。