home / blog / firebase初期化でSPAを選ぶと何がどうなる?

firebase初期化でSPAを選ぶと何がどうなる?

firebase initをの時に聞かれるこれ

? Configure as a single-page app (rewrite all urls to /index.html)?

サイトをSPAで作るために ○○○.com/mypage みたいなURLでアクセスされた時にルートディレクトリのindex.htmlを返すように設定してくれる。

しかしここで、yesを選んだ場合とNoを選んだ場合でどこが変わっているのか疑問だった。

結論 => 自動作成されるfirebase.jsonの内容が書き換わる。

Noを選んだ場合

{
  "hosting": {
    "public": "public",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ]
  }
}

yesを選んだ場合

{
  "hosting": {
    "public": "public",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }
}

SPAで作るとfirebase.jsonにrewritesの項目が追加された状態で作成される。

“source”に指定した条件に合致したURLをリクエストされると、代わりに”destination”に指定したコンテンツが表示される。

“source”の**は任意のサブディレクトリ内にあるファイルまたはフォルダという条件になるため、どんなURLをされてもルートのindex.htmlが表示される。

もし開発途中でSPAに変更する、またはその逆が起こった場合はここのrewritesを書き換えればよい。

参考サイト

ホスティング動作を構成する  |  Firebase Documentation