なぜ npm の global install に sudo が必要だったりしなかったりするのか
モチベーション
npm install -g hoge
のように npm で global install を行う際に sudo が必要な場合がある- 環境によっては不要な場合もあり、 sudo で install して環境がごちゃごちゃになった経験もあり、気になったので調べたメモ
なぜか
- npm の global install 先として sudo が必要なディレクトリが設定されているため
- 以下の記事が大変参考になった
きちんとわかる、npm install | 第1回 PCにコマンドをインストールする
https://www.codegrid.net/articles/2020-npm-install-1/
- mac における npm の global install 先はデフォルトで
/usr/local
になっており、これは sudo が必要なディレクトリになっている - そのため mac で何も考えず global install しようとすると sudo が必要になってしまう
npm config get prefix
コマンドで global install 先を確認することが出来るnpm config set prefix=$HOME/.npm_global
のようなコマンドで global install 先を設定することも出来るので sudo が不要なディレクトリを用意してやると良い- 公式ドキュメントは以下
config | npm Docs
https://docs.npmjs.com/cli/v8/using-npm/config#prefix
prefix
- Default: In global mode, the folder where the node executable is installed. In local mode, the nearest parent folder containing either a package.json file or a node_modules folder.
- Type: Path
The location to install global items. If set on the command line, then it forces non-global commands to run in the specified folder.