npm_config_
で始まる環境変数は npm
コマンドによって解釈される。 npm_config_foo=bar
とセットすると npm のコンフィグ foo
を bar
にセットしたのと同じ意味になる。 https://docs.npmjs.com/cli/v7/using-npm/config#environment-variables
この環境変数の名前は大文字でも小文字でもいいが、 npm は scripts を実行するとき名前が小文字バージョンの環境変数を独自にセットする。それは(ユーザーによってセットされた)名前が大文字の環境変数よりも優先されることに注意。ユーザーによって名前が小文字の環境変数がセットされたらそれが最優先される。
npm_config_
で始まる環境変数は npm
コマンド以外にも認識されることがある。中でも Node のネイティブ拡張を扱うライブラリ node-gyp と node-pre-gyp に関する環境変数は覚えておくといい。
タイトルにも書いた npm_config_arch
は node-gyp がビルドするネイティブ拡張のアーキテクチャを指定する。 npm_config_target_arch
は node-pre-gyp がダウンロードするコンパイル済みネイティブ拡張バイナリのアーキテクチャを指定する。
M1 Mac では node-pre-gyp がネイティブ拡張をダウンロードできずにエラーを出すことがときどきある。その場合は export npm_config_target_arch=x64
してから npm install <pkg>
を実行するといい。 yarn
や pnpm
でも node-gyp や node-pre-gyp が認識する環境変数は使える。
関連記事: