Firebase CLI リファレンス

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

設定

Firebase CLI をインストールするには、コンピュータに Node.js をインストールする必要があります。Node.js をインストールすると、npm(Node Package Manager)で次のコマンドを実行して Firebase CLI をインストールできます。

npm install -g firebase-tools

これで、グローバルに使用可能な Firebase コマンドを、コンピュータの任意のターミナル ウィンドウから使用できるようになります。Firebase CLI をインストールしたら、Google アカウントを使用してログインします。

firebase login

このコマンドを実行するとローカル コンピュータが Firebase アカウントに接続され、プロジェクトへのアクセス権が付与されます。その認証が機能していることをテストするには、firebase list を実行し、すべての Firebase プロジェクトのリストを表示します。このリストの内容は、Firebase コンソールに一覧表示されているプロジェクトと同じです。

最新バージョンを入手する

次のインストール コマンドを再実行すると、使用中の Firebase CLI が最新版かどうかを確認できます。

npm install -g firebase-tools

プロジェクト ディレクトリ

CLI で実行される多くの共通タスク(デプロイなど)にはプロジェクト ディレクトリが必要です。プロジェクト ディレクトリは、firebase.json 設定ファイルが置かれている任意のディレクトリです。一般的にプロジェクト ディレクトリはソース管理のルートと同じである必要があります。また、firebase.json は、通常は README ファイルおよびその他の最上位ファイルとともに配置されます。

プロジェクト ディレクトリを初期化する

新しいプロジェクト ディレクトリを初期化するには、ターミナルでディレクトリを目的のプロジェクト ディレクトリに変更して、次のコマンドを実行します。

firebase init

init コマンドを実行すると、プロジェクト ディレクトリの設定が順を追ってなされます。どの Firebase 機能を使用するかの確認も求められますが、init コマンドを後で再実行すれば、新しい機能をいつでも追加できます。

init コマンドの最後のステップで、デフォルトの Firebase プロジェクトを選択するよう求められます。これによりディレクトリがプロジェクトに関連付けられ、プロジェクト ディレクトリ内から firebase deploy などのプロジェクト固有のコマンドを実行したときに適切なプロジェクトが使用されるようになります。また、同じディレクトリに複数のプロジェクトを関連付けることもできます(ステージング プロジェクトや運用プロジェクトなど)。

デプロイ

Firebase CLI では、Firebase プロジェクトへのコードとアセットのデプロイを管理できます。firebase deploy コマンドを使用して次のデプロイを行うことができます。

  • Firebase Hosting サイトの新規リリース
  • 新規または既存の Cloud Functions
  • Firebase Realtime Database のルール
  • Cloud Storage のルール
  • Cloud Firestore のルール
  • Cloud Firestore のインデックス

デフォルトでは、デプロイを実行すると、プロジェクト ディレクトリ内にあるデプロイ可能なすべてのリソースについて、新しいリリースが作成されます。デプロイするには、プロジェクト ディレクトリに firebase.json が置かれている必要があります

デプロイの競合

Firebase Database または Firebase Storage のセキュリティ ルールをデプロイすると、既存のセキュリティ ルールは上書きされます。これは、コマンドラインから firebase deploy を実行すると、Firebase コンソールで行ったすべての編集が失われる可能性があることを意味します。Firebase プロジェクト ディレクトリでルールを指定する場合は、Firebase コンソールでルールを編集しないでください。万一編集してしまったら、公開後すぐにローカルルールのコピーを更新してください。

デプロイの割り当て

可能性は低いものの、Firebase のデプロイ操作のレートやボリュームを制限する割り当てを超えることがあります。たとえば、非常に多数の関数をデプロイすると、HTTP 429 Quota エラー メッセージが表示されることがあります。このような問題を解決するには、部分デプロイを試すか、割り当ての増量をリクエストします。上で示した Cloud Functions エラーに関連する 1 ユーザーおよび 100 秒あたりの書き込みリクエスト数の割り当てなど、Firebase サービスの特定の割り当ての増量をリクエストできます。

ロールバック

Firebase コンソールでプロジェクトの [Hosting] パネルにアクセスし、目的のリリースの [ロールバック] アクションを選択すると、Firebase Hosting のデプロイをロールバックできます。現時点では、Firebase Database または Firebase Storage のルールのリリースをロールバックすることはできません。

部分デプロイ

選択した機能のみをデプロイしたい場合は、deploy コマンドのフラグ内でカンマ区切りリストを使用します。例:

firebase deploy --only hosting

--only フラグが有効な機能は、hostingfunctionsdatabasestoragefirestore です。これらの名前は、firebase.json 設定ファイル内のキーに対応しています。

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

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

1 つのコマンドで複数の関数をデプロイするために、関数をエクスポート グループにグループ化することもできます。たとえば、functions/index.js 内のグループを次のように定義することができます。

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

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

この場合、functions/groupB.js には追加の関数が含まれます。

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

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

次のコマンドを実行して、グループ内のすべての関数をデプロイできます。

firebase deploy --only functions:groupA

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

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

デプロイ前フックおよびデプロイ後フック

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

デプロイフックを設定するには、プロジェクトの firebase.json 設定ファイルに bash スクリプトを追加します。ファイルで簡単なスクリプトを直接定義するか、プロジェクト ディレクトリ内のファイルを参照できます。たとえば、次に、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>

デプロイできる任意のアセット(hostingfunctionsdatabasestorage、および firestore)に、firebase.jsonpredeploy または postdeploy フックを追加でき、対応するデプロイ コマンドを使用してスクリプトが実行されます。デプロイ前フックとデプロイ後フックはいずれもスクリプトの標準出力とエラー ストリームをターミナルに出力します。障害が発生した場合は、次の点に注意してください。

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

環境変数

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

  • $GCLOUD_PROJECT: アクティブなプロジェクトの ID。
  • $PROJECT_DIR: firebase.json を含むルート ディレクトリ。
  • $RESOURCE_DIR: hostingfunctions スクリプトの場合のみ - デプロイするホスティング リソースまたは関数リソースを含むディレクトリの場所。

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

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

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

firebase init の実行中にプロジェクトを選択すると、default というエイリアスが作成されます。新しいエイリアスを作成するには、次のコマンドを実行します。

firebase use --add

このコマンドを実行すると、1 つの Firebase プロジェクトを選択して、そのプロジェクトに指定したエイリアスを付与することができます。エイリアスの定義は、プロジェクト ディレクトリ内にある .firebaserc ファイルに書き込まれます。

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

プロジェクト ディレクトリに現在定義されているエイリアスのリストを表示するには、firebase use を実行します。エイリアス間を切り替えるには、次のコマンドを実行します。

firebase use <alias_or_project_id>

エイリアスの使用中、プロジェクト固有のすべてのコマンド(firebase deployfirebase data:get など)は、現在使用しているプロジェクトに対して実行されます。エイリアスが 1 つだけプロジェクト ディレクトリに定義されている場合は、自動的にそれが使用されます。

firebase use --clear を実行すると現在のエイリアスを解除でき、firebase use --unalias <alias> を実行するとエイリアスを削除できます。

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

一般的に、.firebaserc プロジェクトはソース管理にチェックインするべきです。これにより、チーム全体で共通のプロジェクト エイリアスを共有できます。自分だけで使用する開発プロジェクトがある場合は、各コマンドとともに --project フラグを渡すか、firebase use <project_id> をエイリアスとして定義せずに実行します。

オープンソース プロジェクトまたはスターター テンプレートについては、通常 .firebaserc ファイルをチェックインするべきではありません。

コマンド リファレンス

管理コマンド

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

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

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

コマンド 説明
deploy Firebase プロジェクトをデプロイします。firebase.json の設定とローカルのプロジェクト フォルダが使用されます。
serve Firebase Hosting の設定を使用してローカル ウェブサーバーを起動します。firebase.json が使用されます。

データベース コマンド

コマンド 説明
database:get 現在のプロジェクトのデータベースからデータを取得して、JSON として表示します。インデックス付きデータのクエリがサポートされます。
database:set 現在のプロジェクトのデータベース内の指定された場所にあるすべてのデータを置き換えます。ファイル、STDIN、またはコマンドライン引数からの入力を受け取ります。
database:update 現在のプロジェクトのデータベース内の指定された場所で部分更新を実行します。ファイル、STDIN、またはコマンドライン引数からの入力を受け取ります。
database:push 新しいデータを現在のプロジェクトのデータベース内の指定された場所にあるリストにプッシュします。ファイル、STDIN、またはコマンドライン引数からの入力を受け取ります。
database:remove 現在のプロジェクトのデータベース内の指定された場所にあるすべてのデータを削除します。
database:profile プロジェクトのデータベースに操作のプロファイルを作成します。操作について詳しくは、Realtime Database プロファイルをご覧ください。

ホスティング コマンド

コマンド 説明
hosting:disable 進行中のプロジェクトの Firebase Hosting トラフィックの処理を停止します。このコマンドを実行した後は、プロジェクトのホスティング URL で [サイトが見つかりませんでした] というメッセージが表示されます。

Cloud Firestore コマンド

コマンド 説明
firestore:delete Cloud Firestore からドキュメントを削除します。Firebase CLI では、再帰的削除を使用してコレクションに含まれるすべてのドキュメントを削除できます。

Cloud Functions コマンド

コマンド 説明
functions:log デプロイされた Cloud Functions からログを読み取ります。
functions:config:set 現在のプロジェクトの Cloud Functions のランタイム設定値を保存します。
functions:config:get 現在のプロジェクトの Cloud Functions の既存の設定値を取得します。
functions:config:unset 現在のプロジェクトのランタイム設定から値を削除します。
functions:config:clone プロジェクト環境間でランタイム設定をコピーします。

詳細については、環境の設定をご覧ください。

ユーザー管理コマンド

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

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。