Intégrer Next.js

Grâce à la Firebase CLI, vous pouvez déployer vos applications Web Next.js sur Firebase et les diffuser avec Firebase Hosting.

Diffuser du contenu statique

Après avoir initialisé Firebase, vous pouvez diffuser du contenu statique à l'aide de la commande de déploiement standard :

firebase deploy

Si votre application inclut une logique dynamique côté serveur, la CLI déploie cette logique dans Cloud Functions for Firebase. Vous pouvez afficher votre application déployée sur son site en direct.

Pré-rendre du contenu dynamique

La CLI Firebase détecte l'utilisation de getStaticProps et getStaticPaths.

Facultatif : intégrer le SDK Firebase JS

Lorsque vous incluez des méthodes du SDK Firebase JS dans les bundles serveur et client, protégez-vous contre les erreurs d'exécution en vérifiant isSupported() avant d'utiliser le produit. Tous les produits ne sont pas compatibles avec tous les environnements.

Facultatif : intégrer le SDK Admin Firebase

Les bundles du SDK Admin échoueront s'ils sont inclus dans votre build de navigateur. Ne les référez que dans getStaticProps et getStaticPaths.

Diffuser du contenu entièrement dynamique (SSR)

La CLI Firebase détecte l'utilisation de getServerSideProps. Dans ce cas, la CLI déploie des fonctions dans Cloud Functions for Firebase afin d'exécuter du code serveur dynamique. Vous pouvez afficher des informations sur ces fonctions, telles que leur domaine et leur configuration d'exécution, dans la console Firebase.

Configurer le comportement avec Hostingnext.config.js

Optimisation des images

L'optimisation des images Next.js est compatible, mais elle déclenchera la création d'une fonction (dans Cloud Functions for Firebase), même si vous n'utilisez pas SSR.

Redirections, réécritures et en-têtes

La CLI Firebase respecte les redirections, réécritures et les en-têtes dans next.config.js, en les convertissant en leur configuration Firebase Hosting équivalente au moment du déploiement. Si une redirection, une réécriture ou un en-tête Next.js ne peuvent pas être convertis en un en-tête équivalent Firebase Hosting, ils sont rétablis et créent une fonction, même si vous n'utilisez pas l'optimisation des images ni SSR.

Facultatif : intégrer Firebase Authentication

L'outil de déploiement Firebase compatible avec les frameworks Web synchronise automatiquement l'état du client et du serveur à l'aide de cookies. Plusieurs méthodes permettent d'accéder au contexte d'authentification dans SSR :

  • L'objet Express res.locals contient éventuellement une instance d'application Firebase authentifiée (firebaseApp) et l'utilisateur actuellement connecté (currentUser). Vous pouvez y accéder dans getServerSideProps.
  • Le nom de l'application Firebase authentifiée est fourni dans la requête de route (__firebaseAppName). Cela permet une intégration manuelle dans le contexte :
// get the authenticated Firebase App
const firebaseApp = getApp(useRouter().query.__firebaseAppName);