我們經常需要安裝全局 npm 模塊,例如:
npm install -g coffee-script
這樣寫往往會報 EACCES
錯誤,因為缺省的 npm 全局安裝目錄(/usr/local/node_modules
)沒有給當前登錄用戶以寫權限。所以一般我都是直接寫 sudo npm install -g coffee-script
來解決這個問題。其實還有更好的方法:https://docs.npmjs.com/getting-started/fixing-npm-permissions 。
文章列出了兩種方法,第一種就是修改 /usr/local/node_modules
、/usr/local/bin
和 /usr/local/share
這三個目錄的 owner:
sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
這種方法適合這臺電腦只有一個開發者使用的場景。
但是我司還有一臺電腦是公共的,可以讓不同的開發者臨時使用,那么就是和方法二:
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
然后修改你的 .profile
或者 .zshrc
(像我這樣用zsh的話),添加:
export PATH=~/.npm-global/bin:$PATH
根據 ~/.profile
內容更新當前 Shell:
source ~/.profile
從此以后 npm install -g
安裝的模塊就都會到該用戶名字下面的 ~/.npm-global
目錄中,這樣就做到了用戶隔離。