direnvでプロジェクト・リポジトリごとの環境変数を統一する

エキサイト株式会社エンジニア佐々木です。Web業界ですと複数プロジェクトやリポジトリがあることがほとんどだと思いますが、CLIで作業するときに環境変数に頼りたくなるときがあります。それをディレクトリ単位で制御してくれるdirenv をご紹介します。

インストール

公式にインストール手順がありますので、こちらを参考にします。

direnv/docs/installation.md at master · direnv/direnv · GitHub

Macだと下記のコマンドになります。

## brew経由
brew install direnv


## バイナリインストール
curl -sfL https://direnv.net/install.sh | bash

インストール後に、.bashrc.zshrc に下記の記述する

## bash
eval "$(direnv hook bash)"

## zsh
eval "$(direnv hook zsh)"

対象ディレクトリに .envrc を設置する

対象ディレクトリに.envrcを設置し、必要な環境変数を記載しておく

cd ${対象ディレクトリ}
touch .envrc
vi .envrc

"""
export TAG=latest
export AWS_PROFILE=xxxx
"""

※環境変数 でシークレット情報を扱っている場合は.gitignoreに記載して、コミットしないように注意

記載したら、direnvに許可する必要があるので、下記のコマンドを投入します。

direnv allow

これで設定が完了です。

確認

対象ディレクトリに入ると、.envrc が実行されているのがわかります。

cd ${対象ディレクトリ}

direnv: loading ~/${対象ディレクトリ}
direnv: export +AWS_PROFILE +TAG ~XPC_SERVICE_NAME

まとめ

複数人で開発作業をしているときに環境変数で制御する必要があるときにREADME.mdに書いたり、オンボーディングのときに周知したりで結構面倒なので、これで統一できるなら割と便利になります。

さいごに

エキサイトではフロントエンジニア、バックエンドエンジニア、アプリエンジニアを随時募集しております。長期インターンも歓迎していますので、興味があれば連絡いただければと思います。

募集職種一覧はこちらになります!(カジュアルからもOK) www.wantedly.com