Fixing npm permissions

此处输入图片的描述

解决使用 npm Node 包管理器全局安装(npm install -g xxx) 相关 package 时提示 EACCES error 的权限问题。npm 全局安装相关 package 报 EACCES 错误的原因,通常是因为当前用户没有相关安装目录的写入权限。

此处输入图片的描述

对于大多数 *nix 系统来说,npm 的安装目录是在 /usr/local 中,具体可以通过
npm config get prefix
加以印证,如果不是在 /usr/local 下的话,以下方法将不适用。

###Step 1:
首先更改 /usr/local 中如下目录的所有者

sudo chown -R username /usr/local/lib/node_modules
sudo chown -R username /usr/local/share
sudo chown -R username /usr/local/bin

(username 可以通过 whoami 查看,具体示当前用户而定)

###Step2:
更改完成后正常 npm install -g xxx 相关 package 。如果仍然无法安装,继续出现 .npm 目录的权限错误,将其更改即可。

sudo chown -R $USER:$GROUP ~/.npm

###step3:
收尾工作
如果安装过 zsh,恰好在 /usr/local/share/ 目录中存在 zsh 的相关文件。由于递归更改了 /usr/local/share/ 目录中的所有文件的拥有者,那么每次登入 Terminal 后都会出现:

zsh compinit: insecure directories, run compaudit for list. Ignore
insecure directories and continue [y] or abort compinit [n]?

的提示,zsh 会提示不安全目录的问题。
此时可以通过 compaudit 查看相关目录,之后将其拥有者改为 root 即可:

sudo chmod -R 755 /usr/local/share/zsh/site-functions
sudo chown -R root /usr/local/share/zsh/site-functions

相关参考资料:
Fixing npm permissions