firebase functionsをローカルでテストする際に環境変数をローカルと本番環境で一致させる方法

firebase functionsにデプロイした関数をテストするたびに

firebase deploy –only functions

を実行し、デプロイが完了するまで待つのは大変時間がかかるので、基本的には

firebase emulators:start

でローカル環境で実行する。

データベース接続処理などを行う場合、一般的にはfirebaseの環境変数に

firebase functions:config:set database_password=”*****”

等でコンソールから保存した内容をコード上で

functions.config().database_passwordといった具合で参照するが、これは本番環境でしか使用できない。

したがってエミュレーターでローカルでテストしたい場合には別途.envファイルをfunctionsフォルダ内に作成してテスト環境用に別のコードで.envを参照していたが、画期的な方法があったのでメモ

firebase functions:config:get > .runtimeconfig.json

上記コマンドを実行することで、firebase functionsに保存していた環境変数がローカルのカレントディレクトリに.runtimeconfig.jsonというファイルで保存される。

そしてfirebase emulators:start –import=.runtimeconfig.jsonでエミュレーターを実行することにより、本番環境と同じコードで環境変数を参照することができる。