
direnvを使うと、ディレクトリごとに環境変数を切り替えられるようになります。
brewを使ってインストール
brew install direnv
~/.zshrcに追記
~/.zshrc
eval "$(direnv hook zsh)"
ここで、
export EDITOR=vim
という具合にエディタも記載しておくと、
direnv edit .
で、ディレクトリ内に.envrcを作成できるようになるのですが、僕はコマンドを使わず好きなエディタで.envrcを作成すれば良いと思ったので、EDITORは記載しませんでした。
動作確認
こんな感じで、各ディレクトリに、.envrc と index.jsを設置します。

index.js
console.log(__dirname);
.envrc
export TEST=test
a/.envrc
export TEST=a
b/.envrc
export TEST=b
c/.envrc
export TEST=c
トップ階層で、
node index.js
を実行すると、
test
と出力されます。

.envrc is blocked. Run `direnv allow` to approve its content
とブロックされる場合は、1度、
direnv allow
を実行しましょう。
トップ階層で、
node a/index.js
を実行すると、
test

と出力されます。
ディレクトリを移動するまで、.envrcの読み込みが行われないからです。
cd ./a node index.js
と、ディレクトリを移動してからindex.jsを実行すると、
a
と出力されます。

こんな感じで、ディレクトリごとに読み込む環境変数を切り替えることが可能となります。
今回は以上です。