コンソールへ移動

デプロイ ターゲット

デプロイ ターゲットは、Firebase プロジェクト内の Firebase リソースの短縮名の識別子です(自分で定義します)。リソースには、独自の静的アセットを持つ Hosting サイトや、同じセキュリティ ルールを共有する Realtime Database インスタンスのグループなどがあります。

デプロイ ターゲットは、複数の Hosting サイト、複数の Cloud Storage バケット、複数の Realtime Database インスタンスがある場合に便利です。デプロイ ターゲットを使用すると、Firebase CLI で、特定の Firebase リソースやプロジェクト内のリソースのグループに次のような設定をデプロイできます。

  • 各 Hosting サイトのホスティング構成
  • 各 Hosting サイト用のプロジェクト ディレクトリの静的アセット
  • 複数の Realtime Database インスタンスまたは複数の Cloud Storage バケットで共有されるセキュリティ ルール

デプロイ ターゲットを設定するには:

  1. ターゲットとする Firebase リソースまたは Firebase リソースのグループに target-name を適用します。
  2. firebase.json ファイルで、各リソースまたはリソースのグループの設定を構成する際に、関連付けられる target-name を参照します。

Firebase CLI コマンドfirebase deploy など)を実行すると、Firebase CLI によって、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-name

パラメータは次のとおりです。

  • type - 該当する Firebase リソースタイプ

    • Firebase Hosting サイトの場合、hosting を使用します。
  • target-name - デプロイ先である Hosting サイトの一意の識別子

  • resource-name - Firebase プロジェクトに一覧表示される Hosting サイトの名前

たとえば、Firebase プロジェクトで 2 つのサイトを作成myapp-blogmyapp-app)した場合は、次のコマンドを実行すると、一意の target-name を各サイト(それぞれ blogapp)に適用できます。

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 resource1-name resource2-name ...

パラメータは次のとおりです。

  • type - 該当する Firebase リソースタイプ

    • Cloud Storage バケットの場合、storage を使用します。
    • Realtime Database インスタンスの場合、database を使用します。
  • target-name - リソース、またはセキュリティ ルールを共有するリソースのグループの一意の識別子

  • resource-name - セキュリティ ルールを共有する、Firebase プロジェクトで一覧表示されるリソースの名前(ストレージ バケット名やデータベース インスタンス名など)

たとえば、3 つのリージョンの Cloud Storage バケット(同じセキュリティ ルールを共有)のグループに main という target-name を適用するには、次のコマンドを実行します。

firebase target:apply storage main myproject.appspot.com myproject-eu myproject-ja

デプロイ ターゲットを使用するように firebase.json ファイルを構成する

Firebase リソースのデプロイ ターゲットを設定したら、適用された target-namefirebase.json 構成ファイルで参照します。

  1. Firebase リソースの typehostingstoragedatabase)ごとに、構成オブジェクトの配列を作成します。
  2. 配列で、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 Storage buckets
      "rules": "storage.main.rules"  // the file that contains the shared security rules
    }
  ]
}

リソースの構成が複数ある場合は、複数のデプロイ ターゲットを作成し、それぞれを firebase.json ファイル内に指定できます。firebase deploy を実行すると、関連するすべてのリソースが一緒にデプロイされます。

デプロイ ターゲットを使用して特定の Firebase リソースにデプロイする

プロジェクト ディレクトリのルートから、次のいずれかのコマンドを実行します。

コマンド 説明
firebase deploy プロジェクト ディレクトリにデプロイできるすべてのリソースのリリースを作成します
firebase deploy --only hosting:target-name 指定した Hosting ターゲットのリソースのみのリリースを作成します
firebase deploy --only storage:target-name 指定した Cloud Storage ターゲットのルールファイルのみをデプロイします
firebase deploy --only database:target-name 指定した Realtime Database ターゲットのルールファイルのみをデプロイします

Firebase プロジェクトにデプロイする前に、次のいずれかのコマンドを実行してサイトをローカルでテストします。

firebase serve
firebase serve --only hosting:target-name

デプロイ ターゲットを管理する

デプロイ ターゲットの設定は、プロジェクト ディレクトリ内の .firebaserc ファイルに保存されます。プロジェクト ディレクトリのルートから次のコマンドを実行すると、プロジェクトのデプロイ ターゲットを管理できます。

コマンド 説明
firebase target 現在のプロジェクト ディレクトリのデプロイ ターゲットを一覧表示します。
firebase target:remove type resource-name 割り当てられているターゲットからリソースを削除します。
firebase target:clear type target-name 指定されたターゲットからすべてのリソースまたは Hosting サイトを削除します。

remove および clear コマンドでは、プロジェクト ディレクトリ内の .firebaserc ファイルのデプロイ ターゲットの設定が自動的に更新されます。