📝

Firebase Hostingで開発環境と本番環境を分ける

2024/03/15に公開

手順

Firebaseの開発プロジェクトを管理画面から作る。

添付画像の管理画面からpjを作る。
hogeというpj名なら下記のようにすると分かりやすいかも。
開発:hoge-dev

また、ホスティングのサービスも設定する。

firebase-toolsをインストールする

npm install -g firebase-tools

Firebase のコマンドラインツールである firebase-tools をグローバルインストールする。

firebase initで開発用のHostingの初期設定をする

開発環境で下記を実行して、firebase の初期設定を行う。

firebase init

こんな画面になるので今回はFirestoreとHostingを使用した例で進める。


     ######## #### ########  ######## ########     ###     ######  ########
     ##        ##  ##     ## ##       ##     ##  ##   ##  ##       ##
     ######    ##  ########  ######   ########  #########  ######  ######
     ##        ##  ##    ##  ##       ##     ## ##     ##       ## ##
     ##       #### ##     ## ######## ########  ##     ##  ######  ########

You're about to initialize a Firebase project in this directory:

  /Users/shu/test/test

Before we get started, keep in mind:

  * You are initializing within an existing Firebase project directory

? Which Firebase features do you want to set up for this directory? Press Space to select features, then Enter to confirm your choices.
 (Press <space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
 ◉ Firestore: Configure security rules and indexes files for Firestore
 ◯ Functions: Configure a Cloud Functions directory and its files
 ◉ Hosting: Configure files for Firebase Hosting and (optionally) set up GitHub Action deploys
❯◉ Hosting: Set up GitHub Action deploys
 ◯ Storage: Configure a security rules file for Cloud Storage
 ◯ Emulators: Set up local emulators for Firebase products
 ◯ Remote Config: Configure a template file for Remote Config

色々聞かれるけどこんな感じで答えておけば問題ないと思う。

質問 返答
Which Firebase features do you want to set up for this directory? Press Space to select features, then Enter to confirm your choices. (Press <space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed) 「Firestore」と「Hosting」とついているものをスペースで選択してエンター(realtime databaseとかfirestoreとかインストールしている人はここの選択が必要です。)
What file should be used for Firestore Rules? (firestore.rules) エンターでOK。
What file should be used for Firestore indexes? エンターでOK。
What do you want to use as your public directory? dist(状況により異なるので、build後に生成されるindex.htmlがいるところでok)
Configure as a single-page app (rewrite all urls to /index.html)? SPAで作っているか聞かれるので、もしそうならY
Set up automatic builds and deploys with GitHub? nでよい
File dist/index.html already exists. Overwrite? nでよい

firebase useで現在選択されているpjを確認する

firebase use

Active Project: hoge-dev
になっているはず

なっていなければ、下記でpjを選択する

firebase use hoge-dev

再度firebase useで選択中のpjを確認する。

Firebaseの本番プロジェクトを管理画面から作る。

今度は管理画面から本番pjを作る。
pj名は下記のようにすると分かりやすいかも。
本番:hoge-prod

ホスティングのサービスも設定する。

firebase use --addで本番用pjを追加する

下記でpj一覧を表示できる。
hoge-prodがちゃんと登録できているか確認。
登録できていなければ管理画面で登録できていないので、ホスティングのところとかを、もう一度見直してください。

$ firebase projects:list
✔ Preparing the list of your Firebase projects
┌────────────────────────────┬───────────────────────────────────────┬────────────────┬──────────────────────┐
│ Project Display Name       │ Project ID                            │ Project Number │ Resource Location ID │
├────────────────────────────┼───────────────────────────────────────┼────────────────┼──────────────────────┤
│ hoge-dev                   │ hoge-dev  (current)                   │ xxxxxxxxxxxx   │ asia-northeast1      │
├────────────────────────────┼───────────────────────────────────────┼────────────────┼──────────────────────┤
│ hoge-prod                  │ hoge-prod                              │ yyyyyyyyyyyy   │ asia-northeast1      │
└────────────────────────────┴───────────────────────────────────────┴────────────────┴──────────────────────┘

作成したプロジェクトが確認できたら、以下の設定を行ってプロジェクトエイリアスを設定する。
エイリアスを設定することで、ローカルで環境ごとにディレクトリを分けることなく開発・本番を切り替えることができるようになる。

$ firebase use --add
? Which project do you want to add? (Use arrow keys)
❯ hoge-dev
  hoge-prod

選択してEnterを押すとエイリアス名を入力できる。
好きな名前を設定して良いがこんな感じだと分かりやすい。
開発:dev
本番:prod

? What alias do you want to use for this project? (e.g. staging) dev

Created alias dev for hoge-dev.
Now using alias dev (hoge-dev)

これでfirebase use devを打つと開発環境に切り替えることができる。

同様に本番環境も$ firebase use --addでhoge-prodを選択してprodに設定する。

firebase deploy で現在選択中のpjへデプロイできる。

※firebaseConfigの設定も開発と本番で切り替えないといけない。ホスティング先は下記で切り替えられるが、このままではデータの保存先が切り替えられていないので、データの保存先は開発のままと言う状態になる。ここは手動でコピペするしか今のとこはわかっていない。すごい手間。やだ。誰か教えて欲しい。

開発環境の時

$ firebase use dev( 開発環境へ切り替え)
$ firebase use deploy(デプロイ)

本番環境の時

$ firebase use prod(本番環境へ切り替え)
$ firebase use deploy(デプロイ)

公開したサイトを非表示にするとき

pjを選択して下記

$firebase hosting:disable

そうするとこうなる。

おまけ

削除 コマンド
functionsの削除 firebase functions:delete
firestoreの削除 firebase firestore:delete

Discussion