デプロイ ターゲットは、Firebase プロジェクト内の Firebase リソースの短縮名の識別子です(自分で定義します)。リソースには、独自の静的アセットを持つ Hosting サイトや、同じセキュリティ ルールを共有する Realtime Database インスタンスのグループなどがあります。
デプロイ ターゲットは、複数の Hosting サイト、複数の Cloud Storage バケット、複数の Realtime Database インスタンスがある場合に便利です。デプロイ ターゲットを使用すると、Firebase CLI で、特定の Firebase リソースやプロジェクト内のリソースのグループに次のような設定をデプロイできます。
- 各 Hosting サイトのホスティング構成
- 各 Hosting サイト用のプロジェクト ディレクトリの静的アセット
- 複数の Realtime Database インスタンスまたは複数の Cloud Storage バケットで共有されるセキュリティ ルール
デプロイ ターゲットを設定するには:
- ターゲットとする Firebase リソース、または Firebase リソースのグループに
TARGET_NAME
を適用します。 firebase.json
ファイルで、各リソースまたはリソースのグループの設定を構成する際に、関連するTARGET_NAME
を参照します。
Firebase CLI コマンド(firebase deploy
など)を実行すると、それぞれの TARGET_NAME
と、それに関連付けられる Firebase リソースのペアが設定されます。次に、CLI によって各リソースの設定が Firebase プロジェクトに通知されます。
Firebase リソースに対してデプロイ ターゲットを設定する
Firebase CLI を使用して、Firebase リソースまたは Firebase リソースのグループに TARGET_NAME
(自分で定義した短縮名の識別子)を適用します。Firebase では、以下に対してデプロイ ターゲットがサポートされています。
デプロイ ターゲットの設定はプロジェクト ディレクトリの .firebaserc
ファイルに保存されるため、デプロイ ターゲットを設定する必要があるのはプロジェクトごとに 1 回だけです。
Hosting のデプロイ ターゲットを設定する
デプロイ ターゲットを作成し、TARGET_NAME
を Hosting サイトに適用するには、次の CLI コマンドを実行します。
firebase target:apply TYPE TARGET_NAME RESOURCE_IDENTIFIER
パラメータは次のとおりです。
TYPE - 該当する Firebase リソースタイプ
- Firebase Hosting サイトの場合は、
hosting
を使用します。
- Firebase Hosting サイトの場合は、
TARGET_NAME - デプロイ先である Hosting サイトの一意の名前
RESOURCE_IDENTIFIER - Firebase プロジェクトにリストされている Hosting サイトの
SITE_ID
たとえば、Firebase プロジェクト内に 2 つのサイト(myapp-blog
、myapp-app
)を作成した場合は、次のコマンドを実行して、各サイトに一意の TARGET_NAME
(それぞれ blog
と app
)を適用できます。
firebase target:apply hosting blog myapp-blog
firebase target:apply hosting app myapp-app
Cloud Storage または Realtime Database のデプロイ ターゲットを設定する
デプロイ ターゲットを作成し、TARGET_NAME
を一連の Cloud Storage または Realtime Database リソースに適用するには、次の CLI コマンドを実行します。
firebase target:apply TYPE TARGET_NAME RESOURCE-1_IDENTIFIER RESOURCE-2_IDENTIFIER ...
パラメータは次のとおりです。
TYPE - 該当する Firebase リソースタイプ
- Cloud Storage バケットの場合は、
storage
を使用します。 - Realtime Database インスタンスの場合は、
database
を使用します。
- Cloud Storage バケットの場合は、
TARGET_NAME - リソース、またはセキュリティ ルールを共有するリソースのグループの一意の名前
RESOURCE_IDENTIFIER - すべて同じセキュリティ ルールを共有するリソースの識別子。これは、Firebase プロジェクトにリストされる識別子です(ストレージ バケット名やデータベース インスタンス ID など)。
たとえば、3 つのリージョンの Cloud Storage バケット(すべて同じセキュリティ ルールを使用)のグループに main
という TARGET_NAME
を適用するには、次のコマンドを実行します。
firebase target:apply storage main myproject.appspot.com myproject-eu myproject-ja
myproject.appspot.com
はデフォルト バケットの識別子であり、myproject-eu
と myproject-ja
は Firebase プロジェクト内に追加で作成された 2 つのバケットです。
デプロイ ターゲットを使用するように firebase.json ファイルを構成する
Firebase リソースのデプロイ ターゲットを設定したら、適用されたそれぞれの TARGET_NAME
が firebase.json
構成ファイル内で参照されるようにします。
- Firebase リソースの
TYPE
(hosting
、storage
、database
)ごとに、構成オブジェクトの配列を作成します。 - 配列で、
target
を指定し(TARGET_NAME
を使用)、関連付けられた Firebase リソースまたはリソースのグループの設定を定義します。
上述の例から続けると、Firebase プロジェクトに 2 つの Hosting サイトと 3 つの Cloud Storage バケット(同じセキュリティ ルールを共有)がある場合、firebase.json
ファイルは次のようになります。
{ "hosting": [ { "target": "blog", // "blog" is the applied TARGET_NAME for the Hosting site "myapp-blog" "public": "blog/dist", // contents of this folder are deployed to the site "myapp-blog" // ... }, { "target": "app", // "app" is the applied TARGET_NAME for the Hosting site "myapp-app" "public": "app/dist", // contents of this folder are deployed to the site "myapp-app" // ... "rewrites": [...] // You can define specific Hosting configurations for each site } ] } { "storage": [ { "target": "main", // "main" is the applied TARGET_NAME for the group of Cloud Storage buckets "rules": "storage.main.rules" // the file that contains the shared security rules } ] }
リソースの構成が複数ある場合は、複数のデプロイ ターゲットを作成し、それぞれを firebase.json
ファイル内に指定します。firebase deploy
を実行すると、関連するすべてのリソースが一緒にデプロイされます。
デプロイ ターゲットの管理
デプロイ ターゲットの設定は、プロジェクト ディレクトリの .firebaserc
ファイルに保存されます。プロジェクト ディレクトリのルートから次のコマンドを実行すると、プロジェクトのデプロイ ターゲットを管理できます。
コマンド | 説明 |
---|---|
firebase target
|
現在のプロジェクト ディレクトリのデプロイ ターゲットを一覧表示します。 |
firebase target:remove \
|
割り当てられているターゲットからリソースを削除します。 |
firebase target:clear \
|
指定されたターゲットからすべてのリソースまたは Hosting サイトを削除します。 |
target:remove
コマンドと target:clear
コマンドは、プロジェクト ディレクトリ内の .firebaserc
ファイルのデプロイ ターゲットの設定を自動的に更新します。
デプロイの前にローカルでテストする
プロジェクト ディレクトリのルートから、次のいずれかのコマンドを実行します。
コマンド | 説明 |
---|---|
firebase emulators:start
|
プロジェクト ディレクトリの構成済みリソースをすべてエミュレートします |
firebase emulators:start \ |
指定した Hosting サイトの Hosting のコンテンツと構成のみをエミュレートします |
firebase emulators:start \
|
指定した Cloud Storage のターゲットのルールファイルのみをエミュレートします |
firebase emulators:start \
|
指定した Realtime Database ターゲットのルールファイルのみをエミュレートします |
Firebase Local Emulator Suite の構成方法と使用方法の詳細をご覧ください。
特定の Firebase リソースをデプロイする
プロジェクト ディレクトリのルートから、次のいずれかのコマンドを実行します。
コマンド | 説明 |
---|---|
firebase deploy
|
プロジェクト ディレクトリにデプロイできるすべてのリソースのリリースを作成します |
firebase deploy \
|
指定した Hosting サイトの Hosting のコンテンツと構成のみをサイトのライブチャネルにデプロイします |
firebase hosting:channel:deploy CHANNEL_ID \ |
指定した Hosting サイトの Hosting のコンテンツと構成のみをサイトのプレビュー チャネルにデプロイします |
firebase deploy \
|
指定した Cloud Storage ターゲットのルールファイルのみをデプロイします |
firebase deploy \
|
指定した Realtime Database ターゲットのルールファイルのみをデプロイします |