会社アカウントと個人アカウントなど、複数のGoogleアカウントを、1つの端末で利用することがある方向けの記事です
実行環境
実行環境は以下のとおりです。
macOS Catalina 10.15.2
zsh 5.7.1
firebase-tools 7.14.0
Firebase CLI
Firebase CLIの詳細は以下をご参照ください。
設定ファイルについて
Firebase CLIは、設定ファイルを configstore で管理しています。
configstoreは、以下のように
環境変数の
$XDG_CONFIG_HOME
で指定するディレクトリ配下
~/.config
ディレクトリ配下
のPathに存在する設定ファイルを参照する仕組みになっています。
そのため、Firebase CLIを通常のセットアップを実行すると、
$ ~/.config/configstore/firebase-tools.json
のように、 firebase-tools.json という名前の設定ファイルが格納されます。
手順
設定ファイルが1つだと、そのログイン済みのGoogleアカウントのみでしかFirebaseにアクセスできないので、以下の方針で解決します。
- Googleアカウントごとに
- 参照する設定ファイルを格納するディレクトリをつくり
- プロジェクトごとに
- 参照する先を指定した環境変数で
- 参照するディレクトリを指定する
設定ファイルのためのディレクトリを作成する
例えば、会社用、個人用として、以下のように作成します
$ mkdir -p ~/.config-firebase-company/configstore
$ mkdir -p ~/.config-firebase-personal/configstore
これらディレクトリに設定ファイル(JSONファイル)を格納すればOKです。
プロジェクトごとに環境変数を設定する
それぞれのプロジェクトで、同じ環境変数のPathを参照したいので、direnvを利用します。
ここでは、homebrewを利用してインストールします。
$ brew install direnv
direnvを利用するためにプロジェクトルートへ .envrc
を作成します。
また、ファイル作成と合わせて、環境変数 XDG_CONFIG_HOME
に参照パスを設定します。(好みですが、自分は .gitignore_global に .envrc を追加しています)
まずは会社用のプロジェクトです。
$ cd ~/awesome-company-project
$ echo export XDG_CONFIG_HOME=~/.config-firebase-company > .envrc
デフォルトでは .envrc を参照できないようになっているので、
$ direnv allow .
として、有効化します。(これをやらないと以下のように怒られます。)
direnv: error /Users/user_name/awesome-company-project/.envrc is blocked.
Run `direnv allow` to approve its content
そして、Firebaseにログインします。
$ firebase login
ブラウザが表示されて、対象のGoogleアカウントを選び、ログインします。この際、生成される設定ファイルは冒頭に説明したディレクトリです。
$ ~/.config/configstore/firebase-tools.json
このファイルを会社用の設定ファイルを格納するディレクトリに移動します。
$ mv ~/.config/configstore/firebase-tools.json ~/.config-firebase-company/configstore
設定ファイルが目的のディレクトリに移動したので、Firebaseのプロジェクト一覧を確認します。
$ firebase projects:list
✔ Preparing the list of your Firebase projects
┌──────────────────────┬──────────────────┬──────────────────────┐
│ Project Display Name │ Project ID │ Resource Location ID │
├──────────────────────┼──────────────────┼──────────────────────┤
│ awesome company app │ awesome-company-app-xxx │ asia-northeast1 │
└──────────────────────┴──────────────────┴──────────────────────┘
1 project(s) total.
プロジェクトが表示されれば、新しいディレクトリから設定ファイルが参照できています。
また、個人用のプロジェクトも同様です。
$ cd ~/awesome-personal-project
$ echo export XDG_CONFIG_HOME=~/.config-firebase-personal > .envrc
$ firebase login
$ mv ~/.config/configstore/firebase-tools.json ~/.config-firebase-personal/configstore
$ firebase projects:list
✔ Preparing the list of your Firebase projects
┌──────────────────────┬──────────────────┬──────────────────────┐
│ Project Display Name │ Project ID │ Resource Location ID │
├──────────────────────┼──────────────────┼──────────────────────┤
│ awesome personal app │ awesome-personal-app-xxx │ asia-northeast1 │
└──────────────────────┴──────────────────┴──────────────────────┘
1 project(s) total.
まとめ
これで、Firebase CLIを複数のGoogleアカウントで利用する、開発をすることができます👏
Google Cloudも同様にconfigstoreを利用しているようなので、もし同じように利用する場合は .config-personal / .config-company などでもよいかも。(自分はパッとみたときにfirebaseであることに気付きたいな思い、このような命名にしました)
以上、参考になれば幸いです。