拡張マニフェストは、拡張インスタンスとその構成のリストです。マニフェストを使用すると、次のことができます。
- 拡張機能の構成を他のユーザーと共有する
- 異なるプロジェクト間で拡張機能の構成をコピーします (ステージング プロジェクトから運用プロジェクトなど)。
- すべての拡張機能を一度にデプロイする
- Firebase Local Emulator Suite を使用して、拡張機能がアプリでどのように機能するかをテストします
- 拡張機能の構成をソース管理にコミットする
- CI/CD パイプラインに拡張機能を含める
拡張マニフェストには、次の 2 つの部分があります。
インスタンス ID から拡張バージョン参照へのマップである、
firebase.json
のextensions
セクション。例えば:{ "extensions": { "my-bigquery-extension": "firebase/firestore-bigquery-export@^0.1.18", "my-image-resizer": "firebase/storage-resize-images@^0.1.22", } }
Firebase プロジェクト ディレクトリの
extensions/
サブディレクトリにある、各拡張機能インスタンスの構成を含む.env
ファイル。たとえば、storage-resize-images
のインスタンスには、次のような.env
ファイルが含まれる場合があります。IMAGE_TYPE=jpeg LOCATION=us-central1 IMG_BUCKET=${param:PROJECT_ID}.appspot.com IMG_SIZES=100x100 DELETE_ORIGINAL_FILE=false
拡張機能マニフェストを作成する
拡張機能マニフェストを作成するには、次の 3 つの方法があります。
- Firebase CLI を使用して拡張機能のマニフェストを管理する
- プロジェクトの拡張機能構成をエクスポートする
- マニフェスト ファイルを手動で編集する
最初の 2 つの方法について、以下で説明します。
Firebase CLI を使用して拡張機能のマニフェストを管理する
--local
オプションを指定して Firebase CLI のext:
コマンドのほとんどを実行すると、プロジェクトの現在の構成を実際に変更することなく、拡張機能のマニフェストを更新できます。
例えば:
firebase ext:install --local firebase/firestore-bigquery-export
上記のコマンドを実行すると、 firebase/firestore-bigquery-export
拡張機能の最新バージョンを構成し、構成をマニフェストに保存するように求められますが、構成はプロジェクトにデプロイされません。
拡張機能マニフェストを変更するコマンドの例をいくつか次に示します。
# ext:configure changes the params for an extension instance in your extensions manifest
$ firebase ext:configure my-bigquery-extension --local
# ext:update --local updates an instance in your extensions manifest
# to the latest version of that extension
$ firebase ext:update my-bigquery-extension --local
# You can also specify a version if you don't want to update to the latest version
$ firebase ext:update my-bigquery-extension firebase/firestore-bigquery-export@0.1.10 --local
# ext:uninstall --local removes an instance from your extensions manifest
$ firebase ext:uninstall my-bigquery-extension --local
プロジェクトの拡張機能構成をエクスポートする
プロジェクトの現在の拡張機能構成をマニフェストに保存するには、次の手順を実行します。
- まだ行っていない場合は、Firebase CLI をセットアップします。
- シェル プロンプトから、プロジェクト ディレクトリに移動します。 (プロジェクト ディレクトリにはファイル
firebase.json
が含まれています)。 -
ext:export
コマンドを実行します:firebase ext:export
ext:export
コマンドは、 extensions
セクションをfirebase.json
ファイルに追加します。さらに、 ext:export
コマンドは、インストールした各拡張機能インスタンスの.env
ファイルを含むextensions
ディレクトリを作成します。これらのファイルには、各インスタンスの構成パラメーターが含まれています。
Firebase Local Emulator Suite を使用して拡張機能の構成をテストする
拡張機能マニフェストにいくつかの拡張機能インスタンスを追加したら、Local Emulator Suite を使用してそれらをテストできます。
- Emulator Suite をインタラクティブに実行するには、以下を実行します:
firebase emulators:start
- Emulator Suite を実行してテスト スクリプトを実行するには、次のコマンドを実行し
firebase emulators:exec my-test.sh
- Emulator Suite をインタラクティブに実行するには、以下を実行します:
これで、マニフェストに拡張インスタンスがリストされている場合、Local Emulator Suite はそれらの拡張のソース コードを~/.cache/firebase/extensions
にダウンロードします。ダウンロードが完了すると、ローカル エミュレーター スイートが起動し、拡張機能のバックグラウンドでトリガーされる機能をトリガーし、アプリをエミュレーター スイートに接続して、アプリとの統合をテストできます。
拡張機能構成をプロジェクトにデプロイする
拡張機能マニフェストにいくつかの拡張機能インスタンスを追加したら、Firebase CLI を使用してそれをプロジェクトにデプロイできます。拡張機能マニフェストを使用してデプロイする場合、マニフェスト内のすべての拡張機能インスタンスをプロジェクトに一度にインストール、更新、および構成します。
拡張マニフェストをデプロイするには:
- シェル プロンプトから、拡張機能の構成が保存されているディレクトリに移動します。 (これは
firebase.json
を含むディレクトリです。ext:export
を実行しただけであれば、既に適切なディレクトリに移動しています。) -
deploy
コマンドを実行します。拡張機能を現在のプロジェクト以外のプロジェクトにデプロイする場合は、--project=
:firebase deploy --only extensions –-project=YOUR_PROJECT_ID
も指定します。
deploy
コマンドは、各インスタンス構成を検証し、 firebase.json
にリストされていない拡張機能インスタンスを宛先プロジェクトから削除するかどうかを尋ねてから、すべての拡張機能インスタンスをデプロイします。
プロジェクト固有の拡張構成
保存された拡張機能の構成を使用して、ステージング プロジェクトと本番プロジェクトなど、複数の異なるプロジェクトにデプロイできます。これを行う場合、一部のパラメーター値はプロジェクトごとに異なる必要がある場合があります。プロジェクト固有の.env
ファイルにより、これが可能になります。
- プロジェクト間で異なるパラメーター値を
extensions/ EXTENSION_INSTANCE_ID .env. YOUR_PROJECT_ID
- 共有パラメータ値を
extensions/ EXTENSION_INSTANCE_ID .env
に入れます。
拡張機能をエミュレートするときに、別のパラメーター値を使用したい場合があります。たとえば、本番用の API キーではなく、テスト用の API キーを提供したい場合があります。これらのパラメーターを.local
ファイルに入れます。
-
extensions/ EXTENSION_INSTANCE_ID .env.local
でエミュレーション中に使用したい秘密以外のパラメーターを入れます - 秘密のパラメーター値を
extensions/ EXTENSION_INSTANCE_ID .secret.local
に入れます