Edited at

Firebase CLI の複数アカウント運用を楽にする設定

複数アカウントでFirebaseCLIを使う

こちらで紹介されていた方法ですが、端末買い替え等の際の備忘録として実際に行った手順を記載しておきます。

環境: macOS Mojave 10.14.1


direnv のインストール

公式サイトの手順に従って、direnv をインストールします。

direnv -- Unclutter your .profile

今回は MacPorts でインストールしました。


bash

sudo port install direnv



direnv の設定

こちらも direnv の公式サイトに各種シェル毎に手順が記載されています。

bash を利用している場合は下記の通り。


bash

echo -n "eval \"\$(direnv hook bash)\"" >> ~/.bashrc

source ~/.bashrc


firebase-tools のインストール

既にインストール済でしたが、一応記載。


bash

sudo port install nodejs11

npm install -g firebase-tools


Firebase のプロジェクトディレクトリ作成

各アカウント用のディレクトリを作成します。

example.local と example.private それぞれを別アカウントで利用する場合。

※ アカウント毎のディレクトリ(account.A, account.B)は分かりやすさのためで、特に必要というわけではありません。


bash

mkdir -p ~/firebase/account.A/example.local/

mkdir -p ~/firebase/account.B/example.private/

各プロジェクト配下にログイン情報等が配置されるディレクトリを作成。

(説明用に2回に分けていますが、下記のみで十分です)


bash

mkdir -p ~/firebase/account.A/example.local/.config

mkdir -p ~/firebase/account.B/example.private/.config


direnv 設定ファイル作成

通常は ~/.config 配下にログイン情報のファイルが作成されるようですが、これを環境変数 XDG_CONFIG_HOME で上書きできるそうなので、各プロジェクトディレクトリ配下の .config ディレクトリを参照するように設定します。


bash

# account.A 用

cd ~/firebase/account.A/example.local
echo "export XDG_CONFIG_HOME=\$(pwd)/.config" > .envrc
direnv allow .

# account.B 用
cd ~/firebase/account.B/example.private
echo "export XDG_CONFIG_HOME=\$(pwd)/.config" > .envrc
direnv allow .


これで、各プロジェクトディレクトリに移動すると XDG_CONFIG_HOME が書き換わり、他のディレクトリに移動すると元に戻ります。


bash

$ cd ~/firebase/account.A/example.local

direnv: loading .envrc
direnv: export +XDG_CONFIG_HOME

$ cd ..
direnv: unloading



Firebase プロジェクトの初期化

あとは各ディレクトリで login / init するだけです。


bash

cd ~/firebase/account.A/example.local

firebase login
firebase init

cd ~/firebase/account.B/example.private
firebase login
firebase init


これで、終わりです。

個人用と会社用が同じマシンにあるのはあまりよろしくないですし、そういうケースは少ないと思いますが、静的サイト用とアプリ用のような分け方は結構あると思うので、これは非常に便利です。


参考

複数アカウントでFirebaseCLIを使う