Node 模块有 755 个权限,我应该设置什么权限才能让 npm 不需要 sudo?

Ind*_*lai 5 permissions command-line sudo npm

我使用它运行的框架npm,并webpack自动,目录/usr/lib/node_modules有755个权限需要运行npm通过sudo。我使用的框架不允许添加sudo到命令中。

现在我需要以全局形式(例如,npm install webpack -g)安装 npm 包而不使用sudo.

什么权限可以/usr/lib/node_modules?如果我设置了 777 权限就可以安全了吗?

谢谢你!

Geo*_*sen 9

你并不需要改变许可npm,以便能够使用它没有sudo。要设置npm运行而不执行sudo以下步骤:

选项1:

  1. 获取 npm 目录路径:

    npm config get prefix
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果您/usr 转到选项 2,则将npm 目录的所有者更改为您的:

     sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
    
    Run Code Online (Sandbox Code Playgroud)

选项 2:

  1. 为全局安装创建目录:

    mkdir ~/.npm-global
    
    Run Code Online (Sandbox Code Playgroud)
  2. 配置使用该目录:

    npm config set prefix '~/.npm-global'
    
    Run Code Online (Sandbox Code Playgroud)
  3. 打开或创建~/.profile并添加:

    export PATH=~/.npm-global/bin:$PATH
    
    Run Code Online (Sandbox Code Playgroud)
  4. 将此也添加到您的~/.bashrc文件中(可选):

    export PATH=/home/username/.npm-global/bin:$PATH
    export NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript:/home/username/.npm-global/lib/node_modules
    
    Run Code Online (Sandbox Code Playgroud)
  5. 刷新文件:

    source ~/.bashrc
    
    Run Code Online (Sandbox Code Playgroud)
  6. 通过运行测试:

    npm install -g jshint
    
    Run Code Online (Sandbox Code Playgroud)

来源:

https://docs.npmjs.com/getting-started/fixing-npm-permissions

http://www.competa.com/blog/how-to-run-npm-without-sudo/