Nuxt Nationカンファレンスが開催されます。11月12日〜13日、ご参加ください。
デプロイ

Firebase

NuxtアプリケーションをFirebaseインフラストラクチャにデプロイします。

Firebase Functions

より新しく推奨される世代のFirebase Functionsを使用するには、firebase.genオプションを2に設定します。

nuxt.config.ts
export default defineNuxtConfig({
  nitro: {
    firebase: {
      gen: 2
    }
  }
})
何らかの理由で設定を使用できない場合は、代わりにNITRO_FIREBASE_GEN=2環境変数を使用できます。

既にウェブサイトのデプロイ済みバージョンがあり、第2世代にアップグレードしたい場合は、Firebaseドキュメントの移行プロセスを参照してください。具体的には、CLIは新しい関数をデプロイする前に既存の関数を削除するように求めます。

第1世代と第2世代の関数の比較

プロジェクト設定

代わりに、Firebase CLIを使用してプロジェクトを設定することをお勧めします。これにより、プロジェクトIDが取得され、必要な依存関係が追加され(上記を参照)、GitHub Actionsによる自動デプロイ(ホスティングのみ)も設定できます。Firebase CLIのインストールについて学習する

  1. 最新バージョンのFirebase CLIをインストールします。
    ターミナル
    npm install -g firebase-tools@latest
    
  2. Firebaseプロジェクトの初期化
    ターミナル
    firebase login
    firebase init hosting
    
プロンプトが表示されたら、公開ディレクトリとして.output/publicを入力できます。次のステップでは、プロジェクトをシングルページアプリケーションとして**設定しないでください**。

完了したら、Cloud Functionsでサーバーサイドレンダリングを有効にするために、次のものをfirebase.jsonに追加します。

firebase.json
{
  "functions": { "source": ".output/server" },
  "hosting": [
    {
      "site": "<your_project_id>",
      "public": ".output/public",
      "cleanUrls": true,
      "rewrites": [{ "source": "**", "function": "server" }]
    }
  ]
}

ローカルプレビュー

デプロイせずにテストする必要がある場合は、サイトのローカルバージョンをプレビューできます。

npm run build -- --preset=firebase
firebase emulators:start

ビルドとデプロイ

Nitroビルドを実行してからfirebase deployコマンドを実行して、Firebaseホスティングにデプロイします。

npm run build -- --preset=firebase
firebase deploy

オプション

nuxt.config.tsファイルでFirebase Functionsのオプションを設定できます。

nuxt.config.ts
export default defineNuxtConfig({
  nitro: {
    firebase: {
      gen: 2,
      httpsOptions: {
        region: 'europe-west1',
        maxInstances: 3,
      },
    },
  },
});

ランタイムNode.jsバージョン

設定でカスタムNode.jsバージョンを設定できます。

nuxt.config.ts
export default defineNuxtConfig({
  nitro: {
    firebase: {
      nodeVersion: '18' // Can be '16' or '18' or '20'
    },
  },
});

Firebaseツールは、package.jsonengines.nodeバージョンを使用して、関数の使用するNodeバージョンを決定します。Nuxtは設定されたNode.jsバージョンを使用して.output/server/package.jsonに自動的に書き込みます。

firebase.jsonファイルにランタイムキーを追加する必要がある場合もあります。

firebase.json
{
  "functions": {
    "source": ".output/server",
    "runtime": "nodejs20"
  }
}
これについては、**Firebaseドキュメント**で詳しく読むことができます。

Firebaseプロジェクトに他のCloud Functionsがある場合

Nuxtプロジェクトをデプロイすると、他のCloud Functionsが削除されるという警告が表示される場合があります。これは、NitroがFirebase Functionsにプロジェクト全体をデプロイするためです。Nuxtプロジェクトのみをデプロイする場合は、--onlyフラグを使用できます。

firebase deploy --only functions:server,hosting
Firebaseデプロイプリセットの詳細については、**Nitroドキュメント**を参照してください。

本番環境でのCookieの使用

Cloud FunctionsまたはCloud Runと共にFirebaseホスティングを使用する場合、一般的に、効率的なCDNキャッシュ動作を許可するために、受信リクエストからCookieが削除されます。特別な名前の__sessionCookieのみがアプリケーションに渡されます。

詳細については、**Firebaseドキュメント**を参照してください。

環境変数の使用

Firebase Functionsの環境変数を設定するには、.envファイルを.output/serverディレクトリにコピーする必要があります。これを行うには、ビルドコマンドの後に自動的に実行されるpostbuildスクリプトをpackage.jsonに追加します。

package.json
{
  "scripts": {
    "postbuild": "cp .env .output/server/.env"
  }
}
詳細については、**Firebaseドキュメント**を参照してください。