みかづきブログ・カスタム

基本的にはちょちょいのほいです。

direnvを使ってディレクトリごとに読み込む環境変数を切り替える 📁

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

と出力されます。

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