Firebase CLI リファレンス

Firebase CLI(GitHub)は、Firebase プロジェクトの管理、表示、デプロイを行うさまざまなツールを提供します。

Firebase CLI を使用する前に、Firebase プロジェクトを設定してください。

CLI を設定または更新する

Firebase CLI をインストールする

ご使用のオペレーティング システム、経験レベル、ユースケースに合わせて、Firebase CLI をインストールする方法を選ぶことができます。CLI のインストール方法に関係なく、利用できる機能と firebase コマンドは同じです。

Windows macOS Linux

Windows

Windows 用の Firebase CLI をインストールするには、次のいずれかのオプションを選びます。

オプション 説明 推奨ユーザー
スタンドアロン バイナリ CLI のスタンドアロン バイナリをダウンロードします。ダウンロードしたら、実行可能ファイルにアクセスして、firebase コマンドを実行できるシェルを開きます。 新規デベロッパー

Node.js を使用していない、または使い慣れていないデベロッパー
npm npm(Node Package Manager)を使用して CLI をインストールし、グローバルに使用可能な firebase コマンドを有効にします。 Node.js を使用するデベロッパー

スタンドアロン バイナリ

Firebase CLI のバイナリをダウンロードして実行する方法は次のとおりです。

  1. Windows 用の Firebase CLI バイナリをダウンロードします。

  2. バイナリにアクセスして、firebase コマンドを実行できるシェルを開きます。

  3. 続けてログインして CLI をテストします。

npm

npm(Node Package Manager)で Firebase CLI をインストールする手順は次のとおりです。

  1. nvm-windows(Node Version Manager)を使用して Node.js をインストールします。Node.js をインストールすると、npm コマンドツールが自動的にインストールされます。

  2. npm を使用して Firebase CLI をインストールするには、次のコマンドを実行します。

    npm install -g firebase-tools

    これにより、グローバルに使用できる firebase コマンドが有効になります。

  3. 続けてログインして CLI をテストします。

macOS または Linux

macOS または Linux 用の Firebase CLI をインストールするには、次のいずれかのオプションを選びます。

オプション 説明 推奨ユーザー
自動インストール スクリプト オペレーティング システムの自動検出、最新の CLI リリースのダウンロード、グローバルに使用可能な firebase コマンドの有効化を行う、単一のコマンドを実行します。 新規デベロッパー

Node.js を使用していない、または使い慣れていないデベロッパー

CI / CD 環境での自動デプロイ
スタンドアロン バイナリ CLI のスタンドアロン バイナリをダウンロードします。ダウンロードしたら、ワークフローに合わせてバイナリを構成し、実行できます。 CLI を使用して完全にカスタマイズできるワークフロー
npm npm(Node Package Manager)を使用して CLI をインストールし、グローバルに使用可能な firebase コマンドを有効にします。 Node.js を使用するデベロッパー

自動インストール スクリプト

自動インストール スクリプトで Firebase CLI をインストールする手順は次のとおりです。

  1. 次の cURL コマンドを実行します。

    curl -sL https://firebase.tools | bash

    このスクリプトは、ご使用のオペレーティング システムを自動的に検出し、最新の Firebase CLI リリースをダウンロードしてから、グローバルに使用可能な firebase コマンドを有効にします。

  2. 続けてログインして CLI をテストします。

自動インストール スクリプトのその他の例や詳細については、firebase.tools にあるスクリプトのソースコードをご覧ください。

スタンドアロン バイナリ

OS 固有の Firebase CLI のバイナリをダウンロードして実行する手順は次のとおりです。

  1. 該当する OS の Firebase CLI バイナリをダウンロードします。 macOS Linux

  2. (省略可)グローバルに使用可能な firebase コマンドを設定します。

    1. chmod +x ./firebase_tools を実行して、バイナリを実行可能にします。
    2. バイナリのパスを PATH に追加します
  3. 続けてログインして CLI をテストします。

npm

npm(Node Package Manager)で Firebase CLI をインストールする手順は次のとおりです。

  1. nvm(Node Version Manager)を使用して Node.js をインストールします。
    Node.js をインストールすると、npm コマンドツールが自動的にインストールされます。

  2. npm を使用して Firebase CLI をインストールするには、次のコマンドを実行します。

    npm install -g firebase-tools

    これにより、グローバルに使用できる firebase コマンドが有効になります。

  3. 続けてログインして CLI をテストします。

Firebase CLI にログインしてテストする

CLI をインストールしたら、認証する必要があります。その後で Firebase プロジェクトを一覧表示して認証を確認できます。

  1. Google アカウントで Firebase にログインするには、次のコマンドを実行します。

    firebase login

    このコマンドにより、ローカルマシンが Firebase に接続され、Firebase プロジェクトへのアクセスが許可されます。

  2. Firebase プロジェクトを一覧表示し、CLI が正しくインストールされていて、アカウントにアクセスしていることをテストします。次のコマンドを実行します。

    firebase projects:list

    Firebase コンソールと同じ Firebase プロジェクトが表示されているはずです。

最新の CLI バージョンに更新する

一般には、Firebase CLI の最新バージョンを使用することをおすすめします。

CLI バージョンの更新方法は、使用しているオペレーティング システムと CLI のインストール方法によって異なります。

Windows

macOS

  • 自動インストール スクリプト: curl -sL https://firebase.tools | upgrade=true bash を実行します。
  • スタンドアロン バイナリ: 新しいバージョンをダウンロードして、システム上のバージョンを置き換えます。
  • npm: npm install -g firebase-tools を実行します。

Linux

  • 自動インストール スクリプト: curl -sL https://firebase.tools | upgrade=true bash を実行します。
  • スタンドアロン バイナリ: 新しいバージョンをダウンロードして、システム上のバージョンを置き換えます。
  • npm: npm install -g firebase-tools を実行します。

CI システムで CLI を使用する

Firebase CLI で認証を完了するにはブラウザが必要ですが、CLI は CI およびその他のヘッドレス環境と完全に互換性があります。

  1. ブラウザがインストールされたマシンに、Firebase CLI をインストールします。

  2. 次のコマンドを実行して、ログイン プロセスを開始します。

    firebase login:ci
  3. 指定された URL にアクセスし、Google アカウントを使用してログインします。

  4. 新しい更新トークンを出力します。現在の CLI セッションは影響を受けません。

  5. 安全かつアクセス可能な方法で、CI システムに出力トークンを保存します。

  6. このトークンは、firebase コマンドを実行するときに使用します。次のいずれかのオプションを使用できます。

    • オプション 1: トークンを環境変数 FIREBASE_TOKEN として保存する。システムはこのトークンを自動的に使用します。

    • オプション 2: CI システムで --token TOKEN フラグを指定してすべての firebase コマンドを実行する。
      トークンを読み込む際の優先順位は、フラグ、環境変数、必要な Firebase プロジェクトの順です。

Firebase プロジェクトを初期化する

CLI を使用して実行される多くの一般的なタスク(Firebase プロジェクトへのデプロイなど)には、プロジェクト ディレクトリが必要です。プロジェクト ディレクトリを設定するには、firebase init コマンドを使用します。プロジェクト ディレクトリは通常、ソース管理のルートと同じディレクトリであり、firebase init の実行後、ディレクトリには firebase.json 構成ファイルが格納されます。

新しい Firebase プロジェクトを初期化するには、アプリのディレクトリ内から次のコマンドを実行します。

firebase init

firebase init コマンドを実行すると、プロジェクト ディレクトリといくつかの Firebase プロダクトを順番に設定できます。プロジェクトの初期化中に、Firebase CLI から次のタスクを完了するように求められます。

  • Firebase プロジェクトで設定する Firebase プロダクトを選択する。

    選択したプロダクトで特定のファイルを構成するように求められます。構成の詳細については、プロダクト(Hosting など)のドキュメントをご覧ください。後でいつでも firebase init を実行して、別の Firebase サービスを設定することもできます。

  • デフォルトの Firebase プロジェクトを選択する。

    このステップにより、プロジェクト固有のコマンド(firebase deploy など)が適切な Firebase プロジェクトに対して実行されるように、現在のプロジェクト ディレクトリが Firebase プロジェクトに関連付けられます。

    また、同じプロジェクト ディレクトリに複数の Firebase プロジェクトを関連付けることもできます(ステージング プロジェクトと本番環境プロジェクトなど)。

初期化の最後に、Firebase は次の 2 つのファイルを自動的に作成し、ローカルアプリ ディレクトリのルートに追加します。

  • プロジェクトの構成を含む firebase.json 構成ファイル。

  • プロジェクト エイリアスが保存される .firebaserc ファイル。

firebase.json ファイル

firebase init コマンドによって、プロジェクト ディレクトリのルートに firebase.json 構成ファイルが作成されます。

firebase.json ファイルは、Firebase CLI でアセットをデプロイするために必要です。このファイルにより、どのファイルと設定がプロジェクト ディレクトリから Firebase プロジェクトにデプロイされるかが指定されます。一部の設定はプロジェクト ディレクトリまたは Firebase コンソールで定義できるため、発生しうるデプロイの競合を解決してください。

ほとんどの Firebase Hosting オプションの構成は、firebase.json ファイル内で直接行うことができます。ただし、その他の Firebase CLI でデプロイできる Firebase サービスについては、firebase init コマンドによって特定のファイルが作成され、そのファイルでそれらのサービスの設定を定義できます(Cloud Functions 用の index.js ファイルなど)。firebase.json ファイルでデプロイ前フックまたはデプロイ後フックを設定することもできます。

初期化時に TypeScript のソースと lint オプションを選択した状態で Firebase HostingCloud FirestoreCloud Functions for Firebase を選択した場合、デフォルトの設定を含む firebase.json ファイルの例は、次のようになります。

{
  "hosting": {
    "public": "public",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ]
  },
  "firestore": {
      "rules": "firestore.rules",
      "indexes": "firestore.indexes.json"
  },
  "functions": {
    "predeploy": [
      "npm --prefix \"$RESOURCE_DIR\" run lint",
      "npm --prefix \"$RESOURCE_DIR\" run build"
    ]
  }
}

デフォルトでは firebase.json が使用されますが、--config PATH フラグを渡して代わりの構成ファイルを指定することができます。

複数の Cloud Firestore データベースを構成する

firebase init を実行するとき、firebase.jsonファイルには、上記のように、プロジェクトのデフォルトのデータベースに対応する 1 つの firestore キーが含まれます。

プロジェクトに複数の Cloud Firestore データベースが含まれている場合は、firebase.json ファイルを編集して、各データベースにそれぞれ異なる Cloud Firestore Security Rules とデータベース インデックス ソースファイルを関連付けます。データベースごとに 1 つのエントリを含む JSON 配列を追加して、ファイルを変更します。

      "firestore": [
        {
          "database": "(default)",
          "rules": "firestore.default.rules",
          "indexes": "firestore.default.indexes.json"
        },
        {
          "database": "ecommerce",
          "rules": "firestore.ecommerce.rules",
          "indexes": "firestore.ecommerce.indexes.json"
        }
      ],

デプロイ時に無視する Cloud Functions ファイル

関数のデプロイ時に、CLI では、functions ディレクトリ内で無視するファイルのリストを自動的に指定します。これにより、デプロイのデータサイズが増える原因となる、バックエンドの無関係なファイルのデプロイを防げます。

デフォルトで無視されるファイルのリスト(JSON 形式)は次のとおりです。

"ignore": [
  ".git",
  ".runtimeconfig.json",
  "firebase-debug.log",
  "firebase-debug.*.log",
  "node_modules"
]

ignore に独自のカスタム値を firebase.json に追加する場合、必ず上述のファイルのリストを保持(欠落している場合は追加)してください。

プロジェクト エイリアスを管理する

複数の Firebase プロジェクトを同じプロジェクト ディレクトリに関連付けることができます。たとえば、ステージング用と本番環境用に Firebase プロジェクトをそれぞれ 1 つ使用するとします。その場合、別のプロジェクト環境を使用することで、本番環境にデプロイする前に変更内容を確認できます。firebase use コマンドを使用すると、エイリアス間の切り替えや新しいエイリアスの作成を行うことができます。

プロジェクト エイリアスを追加する

プロジェクトの初期化中に Firebase プロジェクトを選択すると、プロジェクトに default というエイリアスが自動的に割り当てられます。ただし、プロジェクト固有のコマンドを別の Firebase プロジェクトに対して実行しつつ、同じプロジェクト ディレクトリを使用するには、プロジェクト ディレクトリから次のコマンドを実行します。

firebase use --add

このコマンドを実行すると、別の Firebase プロジェクトを選択し、そのプロジェクトをエイリアスとして割り当てるように求められます。エイリアスの割り当ては、プロジェクト ディレクトリ内にある .firebaserc ファイルに書き込まれます。

プロジェクト エイリアスを使用する

割り当てられた Firebase プロジェクト エイリアスを使用するには、プロジェクト ディレクトリから次のいずれかのコマンドを実行します。

コマンド 説明
firebase use プロジェクト ディレクトリに現在定義されているエイリアスのリストを表示します。
firebase use \
PROJECT_ID|ALIAS
指定した Firebase プロジェクトにすべてのコマンドを実行します。
CLI は、このプロジェクトを現在の「アクティブ プロジェクト」として使用します。
firebase use --clear アクティブ プロジェクトをクリアします。

他の CLI コマンドを実行する前に、firebase use PROJECT_ID|ALIAS を実行して新しいアクティブ プロジェクトを設定します。

firebase use \
--unalias PROJECT_ALIAS
プロジェクト ディレクトリからエイリアスを削除します。

現在アクティブ プロジェクトを変更するには、CLI コマンドに --project フラグを渡します。例: staging エイリアスを割り当てた Firebase プロジェクトに実行するように CLI を設定できます。たとえば、prod エイリアスを割り当てた Firebase プロジェクトに単一のコマンドを実行する場合は、firebase deploy --project=prod を実行します。

ソース管理とプロジェクト エイリアス

一般に、チームでプロジェクト エイリアスを共有するには、.firebaserc ファイルをソース管理にチェックインします。ただし、オープンソース プロジェクトまたはスターター テンプレートについては、通常 .firebaserc ファイルをチェックインするべきではありません。

自分専用の開発プロジェクトがある場合は、各コマンドとともに --project フラグを渡すか、Firebase プロジェクトにエイリアスを割り当てずに firebase use PROJECT_ID を実行できます。

Firebase プロジェクトをローカルで実行してテストする

本番環境にデプロイする前に、ローカルでホストされる URL で Firebase プロジェクトを表示してテストできます。選択した機能のみをテストする場合は、firebase serve コマンドのフラグ内でカンマ区切りのリストを使用します。

次のいずれかのタスクを行う場合は、ローカル プロジェクト ディレクトリのルートから以下のコマンドを実行します。

  • Firebase がホストするアプリの静的コンテンツを表示する。
  • Cloud Functions を使用して Firebase Hosting の動的コンテンツを生成し、本番環境(デプロイ済み)の HTTP 関数を使用して、ローカル URL で Hosting をエミュレートする。
firebase serve --only hosting

ローカル HTTP 関数を使用してプロジェクトをエミュレートする

プロジェクト ディレクトリから次のいずれかのコマンドを実行し、ローカル HTTP 関数を使用してプロジェクトをエミュレートします。

  • テストのためにローカル URL で HTTP 関数およびホスティングをエミュレートするには、次のいずれかのコマンドを使用します。

    firebase serve
    firebase serve --only functions,hosting // uses a flag
  • HTTP 関数のみをエミュレートするには、次のコマンドを使用します。

    firebase serve --only functions

他のローカル デバイスからテストする

デフォルトでは、firebase servelocalhost からのリクエストにのみ応答します。つまり、ホストされているコンテンツには同じパソコンのウェブブラウザからアクセスできますが、ネットワーク上の他のデバイスからはアクセスできません。他のローカル デバイスからテストする場合は、次のように --host フラグを使用します。

firebase serve --host 0.0.0.0  // accepts requests to any host

Firebase プロジェクトにデプロイする

Firebase CLI では、次のようなコードとアセットの Firebase プロジェクトへのデプロイを管理できます。

  • Firebase Hosting サイトの新規リリース
  • 新規、更新済み、既存の Cloud Functions for Firebase
  • Firebase Data Connect 新規または更新済みのスキーマとコネクタ
  • Firebase Realtime Database のルール
  • Cloud Storage for Firebase のルール
  • Cloud Firestore のルール
  • Cloud Firestore のインデックス

Firebase プロジェクトにデプロイするには、プロジェクト ディレクトリから次のコマンドを実行します。

firebase deploy

オプションで、各デプロイにコメントを追加できます。このコメントは、他のデプロイメント情報と一緒にプロジェクトの Firebase Hosting ページに表示されます。 次に例を示します。

firebase deploy -m "Deploying the best new feature ever."

firebase deploy コマンドを使用する場合は、次の点に注意してください。

  • プロジェクト ディレクトリからリソースをデプロイするには、firebase.json ファイルが必要です。このファイルは firebase init コマンドによって自動的に作成されます。

  • デフォルトでは、firebase deploy によって、プロジェクト ディレクトリ内にあるデプロイ可能なすべてのリソースについて、リリースが作成されます。特定の Firebase サービスまたは機能をデプロイするには、部分デプロイを使用します。

セキュリティ ルールのデプロイの競合

Firebase Realtime DatabaseCloud Storage for FirebaseCloud Firestore の場合、ローカル プロジェクト ディレクトリまたは Firebase コンソールのいずれからでもセキュリティ ルールを定義できます。

デプロイの競合を回避するもう一つのオプションは、部分デプロイを使用し、Firebase コンソールでのみルールを定義することです。

デプロイの割り当て

可能性は低いものの、Firebase のデプロイ オペレーションのレートやボリュームを制限する割り当てを超えることがあります。たとえば、非常に多数の関数をデプロイすると、HTTP 429 Quota エラー メッセージが表示されることがあります。このような問題を解決するには、部分デプロイを使用します。

デプロイをロールバックする

プロジェクトの Firebase Hosting ページから、目的のリリースの [ロールバック] アクションを選択すると、Firebase Hosting のデプロイをロールバックできます。

現時点では、Firebase Realtime DatabaseCloud Storage for FirebaseCloud Firestore のセキュリティ ルールのリリースをロールバックすることはできません。

特定の Firebase サービスをデプロイする

特定の Firebase サービスまたは機能のみをデプロイする場合は、firebase deploy コマンドのフラグ内でカンマ区切りリストを使用します。たとえば、次のコマンドは Firebase Hosting コンテンツと Cloud Storage セキュリティ ルールをデプロイします。

firebase deploy --only hosting,storage

次の表に、部分デプロイで利用できるサービスと機能を示します。フラグ内の名前は、firebase.json 構成ファイル内のキーに対応しています。

フラグの構文 デプロイされるサービスまたは機能
--only hosting Firebase Hosting のコンテンツ
--only database Firebase Realtime Database 個のルール
--only dataconnect Firebase Data Connect のスキーマとコネクタ
--only storage Cloud Storage for Firebase 個のルール
--only firestore 構成されたすべてのデータベースに対する Cloud Firestore ルールインデックス
--only functions Cloud Functions for Firebaseこのフラグはより詳細な指定も可能です)

特定の関数をデプロイする

関数をデプロイするときは、特定の関数をターゲットにできます。次に例を示します。

firebase deploy --only functions:function1
firebase deploy --only functions:function1,functions:function2

もう一つのオプションは、/functions/index.js ファイルで関数をエクスポート グループにグループ化することです。関数をグループ化すると、1 つのコマンドで複数の関数をデプロイできます。

たとえば、次の関数を記述して groupAgroupB を定義できます。

var functions = require('firebase-functions/v1');

exports.groupA = {
  function1: functions.https.onRequest(...),
  function2: functions.database.ref('\path').onWrite(...)
}
exports.groupB = require('./groupB');

この例では、別の functions/groupB.js ファイルに、groupB の関数を個別に定義する追加関数が含まれています。次に例を示します。

var functions = require('firebase-functions/v1');

exports.function3 = functions.storage.object().onChange(...);
exports.function4 = functions.analytics.event('in_app_purchase').onLog(...);

この例では、プロジェクト ディレクトリから次のコマンドを実行することによって、groupA のすべての関数をデプロイできます。

firebase deploy --only functions:groupA

または、グループ内の特定の関数をターゲットにするには、次のコマンドを実行します。

firebase deploy --only functions:groupA.function1,groupB.function4

関数を削除する

Firebase CLI では、以前にデプロイした関数を削除するための次のコマンドとオプションがサポートされています。

  • すべてのリージョンで、指定した名前と一致するすべての関数を削除します。

    firebase functions:delete FUNCTION-1_NAME

  • デフォルト以外のリージョンで実行されている指定した関数を削除します。

    firebase functions:delete FUNCTION-1_NAME --region REGION_NAME

  • 複数の関数を削除します。

    firebase functions:delete FUNCTION-1_NAME FUNCTION-2_NAME

  • 指定した関数グループを削除します。

    firebase functions:delete GROUP_NAME

  • 確認メッセージを省略します。

    firebase functions:delete FUNCTION-1_NAME --force

デプロイ前とデプロイ後にスクリプトで実行されるタスクを設定する

シェル スクリプトを firebase deploy コマンドに接続して、デプロイ前のタスクまたはデプロイ後のタスクを実施できます。たとえば、デプロイ前スクリプトで TypeScript コードを JavaScript にトランスパイルできます。また、デプロイ後フックで管理者に Firebase Firebase Hosting への新しいサイト コンテンツのデプロイを通知することも可能です。

デプロイ前フックまたはデプロイ後フックを設定するには、firebase.json 構成ファイルに bash スクリプトを追加します。firebase.json ファイルで簡単なスクリプトを直接定義するか、プロジェクト ディレクトリ内にある他のファイルを参照できます。

たとえば、次のスクリプトは、Firebase Hosting へのデプロイが成功した場合に Slack メッセージを送信するデプロイ後のタスクの firebase.json 式です。

"hosting": {
  // ...

  "postdeploy": "./messageSlack.sh 'Just deployed to Firebase Hosting'",
  "public": "public"
}

messageSlack.sh スクリプト ファイルはプロジェクト ディレクトリにあり、次のようになります。

curl -X POST -H 'Content-type: application/json' --data '{"text":"$1"}'
     \https://SLACK_WEBHOOK_URL

デプロイできるいずれかのアセットに対して、predeploy フックと postdeploy フックを設定できます。firebase deploy を実行すると、firebase.json ファイルで定義されているすべてのデプロイ前のタスクとデプロイ後のタスクがトリガーされることに注意してください。特定の Firebase サービスに関連付けられているタスクのみを実施するには、部分デプロイ コマンドを使用します。

predeploy フックと postdeploy フックは、いずれもスクリプトの標準出力とエラー ストリームをターミナルに出力します。障害が発生した場合は、次の点に注意してください。

  • デプロイ前フックが予期したとおりに完了しなかった場合、デプロイはキャンセルされます。
  • なんらかの理由でデプロイが失敗すると、デプロイ後フックはトリガーされません。

環境変数

デプロイ前フックとデプロイ後フックで実行されているスクリプト内では、次の環境変数を使用できます。

  • $GCLOUD_PROJECT: アクティブ プロジェクトの ID
  • $PROJECT_DIR: firebase.json ファイルを含むルート ディレクトリ
  • $RESOURCE_DIR: hostingfunctions のスクリプトのみ)デプロイする Hosting または Cloud Functions リソースが格納されているディレクトリの場所

複数の Realtime Database インスタンスを管理する

Firebase プロジェクトには、複数の Firebase Realtime Database インスタンスを含めることができます。既定では、CLI コマンドはデフォルトのデータベース インスタンスを操作します。

ただし、--instance DATABASE_NAME フラグを使用すれば、デフォルト以外のデータベース インスタンスも操作できます。--instance フラグは次のコマンドでサポートされています。

  • firebase database:get
  • firebase database:profile
  • firebase database:push
  • firebase database:remove
  • firebase database:set
  • firebase database:update

コマンド リファレンス

CLI 管理コマンド

コマンド 説明
help CLI または特定のコマンドに関するヘルプ情報を表示します。
init 現在のディレクトリに新しい Firebase プロジェクトを関連付けて設定します。このコマンドを実行すると、firebase.json 構成ファイルが現在のディレクトリに作成されます。
login Firebase アカウントを使用して CLI の認証を行います。ウェブブラウザにアクセスできる必要があります。
localhost にアクセスできないリモート環境で CLI にログインするには、--no-localhost フラグを使用します。
login:ci 非対話形式の環境で使用する認証トークンを生成します。
logout Firebase アカウントを CLI からログアウトします。
open 関連するプロジェクト リソースをブラウザで開きます。
projects:list アクセス権のある Firebase プロジェクトの一覧を表示します。
use CLI にアクティブな Firebase プロジェクトを設定します。
プロジェクトのエイリアスを管理します。

プロジェクト管理コマンド

コマンド 説明
Firebase プロジェクトの管理
projects:addfirebase Firebase リソースを既存の Google Cloud プロジェクトに追加します。
projects:create 新しい Google Cloud プロジェクトを作成し、新しいプロジェクトに Firebase リソースを追加します。
projects:list アクセス権のある Firebase プロジェクトの一覧を表示します。
Firebase アプリの管理(iOS、Android、ウェブ)
apps:create アクティブ プロジェクトに新しい Firebase アプリを作成します。
apps:list アクティブ プロジェクトに登録済みの Firebase アプリを一覧表示します。
apps:sdkconfig Firebase アプリの Google サービスの構成を出力します。
setup:web 非推奨。代わりに apps:sdkconfig を使用し、プラットフォーム引数として web を指定してください。
Firebase ウェブアプリの Google サービスの構成を出力します。
SHA 証明書ハッシュの管理(Android のみ)
apps:android:sha:create \
FIREBASE_APP_ID SHA_HASH
指定した SHA 証明書ハッシュを指定した Firebase Android アプリに追加します。
apps:android:sha:delete \
FIREBASE_APP_ID SHA_HASH
指定した Firebase Android アプリから指定した SHA 証明書ハッシュを削除します。
apps:android:sha:list \
FIREBASE_APP_ID
指定した Firebase Android アプリの SHA 証明書ハッシュを一覧表示します。

デプロイとローカルでの開発

次のコマンドを使用すると、Firebase Hosting サイトのデプロイ、およびこのサイトとの通信を行うことができます。

コマンド 説明
deploy プロジェクト ディレクトリからアクティブ プロジェクトにコードとアセットをデプロイします。Firebase Hosting の場合、firebase.json 構成ファイルが必要です。
serve Firebase Hosting 構成を使用してローカル ウェブサーバーを起動します。Firebase Hosting の場合、firebase.json 構成ファイルが必要です。

App Distribution コマンド

コマンド 説明
appdistribution:distribute \
--app FIREBASE_APP_ID
テスターがビルドを利用できるようにします。
appdistribution:testers:add プロジェクトにテスターを追加します。
appdistribution:testers:remove プロジェクトからテスターを削除します。

App Hosting コマンド

コマンド 説明
apphosting:backends:create \
--project PROJECT_ID \
--location REGION --app APP_ID
App Hosting バックエンドを構成する単一のコードベースにリンクされたマネージド リソースのコレクションを作成します。必要に応じて、Firebase アプリ ID で既存の Firebase ウェブアプリを指定します。
apphosting:backends:get \
BACKEND_ID \
--project PROJECT_ID \
--location REGION
バックエンドの公開 URL などの特定の詳細情報を取得します。
apphosting:backends:list \
--project PROJECT_ID
プロジェクトに関連付けられているすべてのアクティブ バックエンドのリストを取得します。
firebase apphosting:backends:delete \
BACKEND_ID \
--project PROJECT_ID \
--location REGION
プロジェクトからバックエンドを削除します。
firebase apphosting:config:export \
--project PROJECT_ID \
--secrets ENVIRONMENT_NAME
アプリのエミュレーションで使用するために Secret をエクスポートします。
デフォルトは apphosting.yaml に保存されている Secret です。または、--secrets を使用して、対応する apphosting.ENVIRONMENT_NAME.yaml ファイルがある環境を指定します。
firebase apphosting:rollouts:create \
BACKEND_ID \
--git_branch BRANCH_NAME \
--git_commit COMMIT_ID
手動でトリガーされるロールアウトを作成します。
必要に応じて、ブランチまたは特定の commit に対する最新の commit を指定します。オプションが指定されていない場合は、ブランチのリストから選択するようプロンプトが表示されます。
apphosting:secrets:set KEY --project PROJECT_ID \
--location REGION \
--data-file DATA_FILE_PATH
Secret Manager にシークレット マテリアルを保存します。
必要に応じて、Secret データの読み取り元となるファイルパスを指定します。標準入力から Secret データを読み取るには、_ に設定します。
apphosting:secrets:grantaccess KEY BACKEND_ID \
--project PROJECT_ID \
--location REGION
提供されたシークレットへのアクセス権をバックエンド サービス アカウントに付与し、ビルド時または実行時に App Hosting からシークレットにアクセスできるようにします。
apphosting:secrets:describe KEY \
--project PROJECT_ID
シークレットとそのバージョンのメタデータを取得します。
firebase apphosting:secrets:access \
KEY[@version] \
--project PROJECT_ID
シークレットとそのバージョンを指定してシークレット値にアクセスします。デフォルトでは、最新バージョンにアクセスします。

Authentication(ユーザー管理)コマンド

コマンド 説明
auth:export アクティブ プロジェクトのユーザー アカウントを JSON または CSV ファイルにエクスポートします。詳細については、auth:import and auth:export のページをご覧ください。
auth:import JSON または CSV ファイルからアクティブなプロジェクトにユーザー アカウントをインポートします。詳細については、auth:import and auth:export のページをご覧ください。

Cloud Firestore コマンド

コマンド 説明
firestore:locations

Cloud Firestore データベースで使用可能なロケーションを一覧表示します。

firestore:databases:create DATABASE_ID

ネイティブ モードで、Firebase プロジェクト内にデータベース インスタンスを作成します。

このコマンドは、次のフラグを受け取ります。

  • --location <region name>: データベースをデプロイするロケーションを指定します。firebase firestore:locations を実行すると、使用可能なロケーションを一覧表示できます。必須
  • --delete-protection <deleteProtectionState>: 指定したデータベースの削除を許可または禁止します。有効な値は ENABLED または DISABLED です。デフォルトは DISABLED です。
  • --point-in-time-recovery <PITRState>: ポイントインタイム リカバリを有効にするかどうかを設定します。有効な値は ENABLED または DISABLED です。デフォルトは DISABLED です。 省略可。
firestore:databases:list

Firebase プロジェクトのデータベースを一覧表示します。

firestore:databases:get DATABASE_ID

Firebase プロジェクトで指定したデータベースのデータベース構成を取得します。

firestore:databases:update DATABASE_ID

Firebase プロジェクトで指定したデータベースのデータベース構成を更新します。

フラグを 1 つ以上指定する必要があります。このコマンドは、次のフラグを受け取ります。

  • --delete-protection <deleteProtectionState>: 指定したデータベースの削除を許可または禁止します。有効な値は ENABLED または DISABLED です。デフォルトは DISABLED です。
  • --point-in-time-recovery <PITRState>: ポイントインタイム リカバリを有効にするかどうかを設定します。有効な値は ENABLED または DISABLED です。デフォルトは DISABLED です。 省略可。
firestore:databases:delete DATABASE_ID

Firebase プロジェクトのデータベースを削除します。

firestore:indexes

Firebase プロジェクト内のデータベースのインデックスを一覧表示します。

このコマンドは、次のフラグを受け取ります。

  • --database DATABASE_ID: インデックスを一覧表示するデータベースの名前を指定します。指定しない場合、デフォルト データベースのインデックスが一覧表示されます。
firestore:delete

アクティブ プロジェクトのデータベース内のドキュメントを削除します。CLI を使用すると、コレクション内のすべてのドキュメントを再帰的に削除できます。

CLI を使用して Cloud Firestore データを削除すると、読み取りと削除の費用が発生します。詳細については、Cloud Firestore の課金についてをご覧ください。

このコマンドは、次のフラグを受け取ります。

  • --database DATABASE_ID: ドキュメントの削除元となるデータベースの名前を指定します。指定しない場合、ドキュメントはデフォルト データベースから削除されます。省略可。

Cloud Functions for Firebase コマンド

コマンド 説明
functions:config:clone 別のプロジェクトの環境のクローンをアクティブな Firebase プロジェクトに作成します。
functions:config:get アクティブ プロジェクトの Cloud Functions の既存の構成値を取得します。
functions:config:set アクティブ プロジェクトの Cloud Functions のランタイム構成値を保存します。
functions:config:unset アクティブ プロジェクトのランタイム構成から値を削除します。
functions:log デプロイされた Cloud Functions からログを読み取ります。

詳細については、環境構成のドキュメントをご覧ください。

Crashlytics コマンド

コマンド 説明
crashlytics:mappingfile:generateid \
--resource-file=PATH/TO/ANDROID_RESOURCE.XML
指定した Android リソース(XML)ファイルに一意のマッピング ファイル ID を生成します。
crashlytics:mappingfile:upload \
--app=FIREBASE_APP_ID \
--resource-file=PATH/TO/ANDROID_RESOURCE.XML \
PATH/TO/MAPPING_FILE.TXT
このアプリの Proguard 対応マッピング(TXT)ファイルをアップロードし、指定した Android リソース(XML)ファイルで宣言されたマッピング ファイル ID に関連付けます。
crashlytics:symbols:upload \
--app=FIREBASE_APP_ID \
PATH/TO/SYMBOLS
Android でネイティブ ライブラリによるクラッシュが発生すると、Crashlytics と互換性のあるシンボル ファイルを生成し、Firebase サーバーにアップロードします。

Data Connect コマンド

これらのコマンドとそのユースケースについて詳しくは、Data Connect CLI リファレンス ガイドをご覧ください。

コマンド 説明
dataconnect:services:list Firebase プロジェクトにデプロイされているすべての Data Connect サービスを一覧表示します。
dataconnect:sql:diff \
SERVICE_ID
指定したサービスについて、ローカルの Data Connect スキーマと Cloud SQL データベース スキーマの違いが表示されます。
dataconnect:sql:migrate \
--force \
SERVICE_ID
Cloud SQL データベースのスキーマを移行して、ローカルの Data Connect スキーマと一致させます。
dataconnect:sql:grant\
--role=ROLE \
--email=EMAIL \
SERVICE_ID
指定されたユーザーまたはサービス アカウントのメールアドレスに SQL ロールを付与します。
--role フラグの場合、付与する SQL ロールは ownerwriterreader のいずれかです。
--email フラグには、ロールを付与するユーザーまたはサービス アカウントのメールアドレスを指定します。
dataconnect:sdk:generate Data Connect コネクタ用の型指定された SDK を生成します。

Extensions コマンド

コマンド 説明
ext Firebase Extensions コマンドの使用方法を表示します。
アクティブなプロジェクトにインストールされている拡張機能インスタンスの一覧を表示します。
ext:configure \
EXTENSION_INSTANCE_ID
拡張機能のマニフェスト内にある拡張機能インスタンスのパラメータ値を再構成します。
ext:info \
PUBLISHER_ID/EXTENSION_ID
拡張機能の詳細情報を出力します。
ext:install \
PUBLISHER_ID/EXTENSION_ID
拡張機能の新しいインスタンスを拡張機能のマニフェストに追加します。
ext:list Firebase プロジェクトにインストールされている、すべての拡張機能インスタンスの一覧を表示します。
各拡張機能のインスタンス ID を出力します。
ext:uninstall \
EXTENSION_INSTANCE_ID
拡張機能のマニフェストから拡張機能インスタンスを削除します。
ext:update \
EXTENSION_INSTANCE_ID
拡張機能のマニフェスト内の拡張機能インスタンスを最新バージョンに更新します。
ext:export インストールされているすべての拡張機能インスタンスをプロジェクトから拡張機能のマニフェストにエクスポートします。

Extensions パブリッシャー コマンド

コマンド 説明
ext:dev:init 現在のディレクトリ内で、新しい拡張機能のスケルトン コードベースを初期化します。
ext:dev:list \
PUBLISHER_ID
パブリッシャーがアップロードしたすべての拡張機能のリストを出力します。
ext:dev:register Firebase プロジェクトを拡張機能パブリッシャー プロジェクトとして登録します。
ext:dev:deprecate \
PUBLISHER_ID/EXTENSION_ID \
VERSION_PREDICATE
バージョンの記述子に一致する拡張機能バージョンを非推奨にします。
バージョンの記述子には、単一のバージョン(1.0.0 など)、またはバージョン範囲(>1.0.0 など)を指定します。
バージョンの記述子を指定しない場合は、該当する拡張機能のすべてのバージョンを非推奨にします。
ext:dev:undeprecate \
PUBLISHER_ID/EXTENSION_ID \
VERSION_PREDICATE
バージョンの記述子に一致する拡張機能のバージョンの非推奨を解除します。
バージョンの記述子には、単一のバージョン(1.0.0 など)、またはバージョン範囲(>1.0.0 など)を指定します。
バージョンの記述子を指定しない場合は、該当する拡張機能のすべてのバージョンの非推奨を解除します。
ext:dev:upload \
PUBLISHER_ID/EXTENSION_ID
拡張機能の新しいバージョンをアップロードします。
ext:dev:usage \
PUBLISHER_ID
パブリッシャーがアップロードした拡張機能のインストール数と使用状況の指標を表示します。

Hosting コマンド

コマンド 説明
hosting:disable

アクティブな Firebase プロジェクトの Firebase Hosting トラフィックの処理を停止します。

このコマンドを実行した後、プロジェクトの Hosting URL に「サイトが見つかりません」というメッセージが表示されます。

Hosting サイトの管理
firebase hosting:sites:create \
SITE_ID

指定された SITE_ID を使用して、アクティブな Firebase プロジェクトに新しい Hosting サイトを作成します

(省略可)次のフラグを渡して、新しいサイトに関連付ける既存の Firebase ウェブアプリを指定します。 --app FIREBASE_APP_ID

firebase hosting:sites:delete \
SITE_ID

指定された Hosting サイトを削除します

サイトが削除される前に、CLI に確認プロンプトが表示されます。

(省略可)次のフラグを渡して確認プロンプトをスキップします。-f または --force

firebase hosting:sites:get \
SITE_ID

指定した Hosting サイトに関する情報を取得します

firebase hosting:sites:list

アクティブな Firebase プロジェクトのすべての Hosting サイトのリストを取得します

プレビュー チャネルの管理
firebase hosting:channel:create \
CHANNEL_ID

指定された CHANNEL_ID を使用して、デフォルトHosting サイトに新しいプレビュー チャネルを作成します。

このコマンドではチャネルにデプロイされません。

firebase hosting:channel:delete \
CHANNEL_ID

指定したプレビュー チャネルを削除します。

サイトのライブチャネルは削除できません。

firebase hosting:channel:deploy \
CHANNEL_ID

Hosting のコンテンツと構成を指定したプレビュー チャネルにデプロイします。

プレビュー チャネルがまだない場合は、このコマンドによってチャネルへのデプロイ前にデフォルトHosting サイトにチャネルが作成されます。

firebase hosting:channel:list デフォルトHosting サイトにあるすべてのチャネル(ライブチャネルを含む)を一覧表示します。
firebase hosting:channel:open \
CHANNEL_ID
ブラウザを開き、指定したチャネルの URL を表示します。ブラウザで開くことができない場合は URL を返します。
バージョンのクローン
firebase hosting:clone \
SOURCE_SITE_ID:SOURCE_CHANNEL_ID \
TARGET_SITE_ID:TARGET_CHANNEL_ID

指定した「ソース」チャネルに一番新しくデプロイされたバージョンのクローンを、指定した「ターゲット」チャネルに作成します。

このコマンドでは、指定した「ターゲット」チャネルにもデプロイされます。「ターゲット」チャネルがまだない場合、このコマンドは、チャネルへのデプロイの前に「ターゲット」とする Hosting サイトに新しいプレビュー チャネルを作成します。

firebase hosting:clone \
SOURCE_SITE_ID:@VERSION_ID \
TARGET_SITE_ID:TARGET_CHANNEL_ID

指定したバージョンのクローンを、指定した「ターゲット」チャネルに作成します。

このコマンドでは、指定した「ターゲット」チャネルにもデプロイされます。「ターゲット」チャネルがまだない場合、このコマンドは、チャネルへのデプロイの前に「ターゲット」とする Hosting サイトに新しいプレビュー チャネルを作成します。

VERSION_ID は、Firebase コンソールの Hosting ダッシュボードで確認できます。

Realtime Database コマンド

最初のデフォルトの Realtime Database インスタンスを作成できます。これには、Firebase コンソール内で作業するか、一般的な firebase init ワークフローまたは特定の firebase init database フローを使用します。

インスタンスを作成した後は、複数の Realtime Database インスタンスを管理するの説明に沿ってインスタンスを管理できます。

コマンド 説明
database:get アクティブ プロジェクトのデータベースからデータを取得し、JSON として表示します。インデックス付きデータのクエリがサポートされます。
database:instances:create 指定したインスタンス名でデータベース インスタンスを作成します。--location オプションを指定して、指定したリージョンにデータベースを作成できます。このオプションで使用するリージョン名については、プロジェクトのロケーションを選択するをご覧ください。 現在のプロジェクトにデータベース インスタンスが存在しない場合は、firebase init フローを実行してインスタンスを作成するよう求められます。
database:instances:list このプロジェクトのすべてのデータベース インスタンスのリストを取得します。--location オプションを指定して、指定したリージョンのデータベースのリストを取得できます。このオプションで使用するリージョン名については、プロジェクトのロケーションを選択するをご覧ください。
database:profile アクティブ プロジェクトのデータベースにオペレーションのプロファイルを作成します。詳細については、Realtime Database オペレーション タイプをご覧ください。
database:push アクティブ プロジェクトのデータベースの指定場所にあるリストに新しいデータを追加します。ファイル、STDIN またはコマンドライン引数から入力を取得します。
database:remove アクティブ プロジェクトのデータベースの指定場所にあるデータをすべて削除します。
database:set アクティブ プロジェクトのデータベース内の指定場所にあるデータをすべて置き換えます。ファイル、STDIN またはコマンドライン引数から入力を取得します。
database:update アクティブ プロジェクトのデータベース内の指定場所で部分更新を実行します。ファイル、STDIN またはコマンドライン引数から入力を取得します。

Remote Config コマンド

コマンド 説明
remoteconfig:versions:list \
--limit NUMBER_OF_VERSIONS
テンプレートの最新 10 件のバージョンのリストを取得します。0 を指定すると、既存のすべてのバージョンが返されます。--limit オプションを指定すると、返されるバージョンの数を制限できます。
remoteconfig:get \
--v, version_number VERSION_NUMBER
--o, output FILENAME
バージョンを指定してテンプレートを取得し(デフォルトは最新バージョン)、パラメータ グループ、パラメータ、条件名、バージョンをテーブルに出力します。オプションで、-o, FILENAME で指定したファイルに出力を書き込むことができます。
remoteconfig:rollback \
--v, version_number VERSION_NUMBER
--force
指定した以前のバージョン番号に Remote Config テンプレートをロールバックします。バージョン番号を指定しない場合は、デフォルトで直前のバージョン(現在のバージョンの 1 つ前)にロールバックされます。--force を指定しない場合、ロールバックを実行する前に、確認を求めるプロンプトが表示されます。