Global インストールした npm パッケージに PATH を通す方法

2023.02.01

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、CX事業本部 Delivery部の若槻です。

今回は、Global インストールした npm パッケージに PATH を通す方法を確認してみました。

はじめに結論

次のコマンドを実行すれば PATH を通すことができました。

export PATH=$PATH:`npm prefix --location=global`/bin

.zshrc に記述する場合は次のように実行します。

echo "export PATH=$PATH:`npm prefix --location=global`/bin" >> ~/.zshrc

環境

M1 MacBook ローカル環境で確認をしました。

$ node --version
v16.16.0

$ npm --version
8.11.0

$ sw_vers
ProductName:    macOS
ProductVersion: 12.6
BuildVersion:   21G115

解説

npm の実行可能ファイルが配置される場所は npm bin コマンドで確認可能です。

$ npm bin -g
npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.
/Users/wakatsuki.ryuta/.npm-global/bin

Global インストールされるパッケージの実体が配置される場所は {prefix}/lib/node_modules ですが、実行可能ファイル(bin files)は {prefix}/bin にリンクされます。

Operates in "global" mode, so that packages are installed into the prefix folder instead of the current working directory. See folders for more on the differences in behavior.

  • packages are installed into the {prefix}/lib/node_modules folder, instead of the current working directory.
  • bin files are linked to {prefix}/bin

{prefix} の場所は npm prefix または npm config list コマンドで確認可能です。

$ npm prefix --location=global
/Users/wakatsuki.ryuta/.npm-global

$ npm config list --location=global 
; "user" config from /Users/wakatsuki.ryuta/.npmrc

prefix = "/Users/wakatsuki.ryuta/.npm-global" 

; "cli" config from command line options

location = "global" 

; node bin location = /usr/local/bin/node
; node version = v16.16.0
; npm local prefix = /Users/wakatsuki.ryuta/projects/cm-rwakatsuki/flutter_sample_app
; npm version = 8.11.0
; cwd = /Users/wakatsuki.ryuta/projects/cm-rwakatsuki/flutter_sample_app
; HOME = /Users/wakatsuki.ryuta
; Run `npm config ls -l` to show all defaults.

既定では {prefix}$HOME/.npm-global となります。

よって冒頭で示した次のコマンドを実行すれば、PATH に {prefix}/bin が追加されて Global インストールされた npm パッケージが実行可能となります。

export PATH=$PATH:`npm prefix --location=global`/bin

ちなみに npm bin コマンドの実行結果を PATH に通しても同様のことができますが、デメリットとして実行時に PATH がまだ通っていない場合は WARNING が出力されてしまいます。

$ export PATH=$PATH:`npm bin --location=global`
npm ERR! bin (not in PATH env variable)

そのため ~/.zshrc などに上記コマンドを記述すると、ターミナル起動のたびに WARNING が出力されるのが少し煩わしくなります。なので前述の npm prefix コマンドを使う方法の方がオススメです。

参考

以上