1
1

More than 3 years have passed since last update.

Firebase CLIを複数のGoogleアカウントで利用する

Posted at

会社アカウントと個人アカウントなど、複数の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にアクセスできないので、以下の方針で解決します。

  1. Googleアカウントごとに
  2. 参照する設定ファイルを格納するディレクトリをつくり
  3. プロジェクトごとに
  4. 参照する先を指定した環境変数で
  5. 参照するディレクトリを指定する

設定ファイルのためのディレクトリを作成する

例えば、会社用、個人用として、以下のように作成します

$ 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であることに気付きたいな思い、このような命名にしました) 

以上、参考になれば幸いです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1