Déployer des sites web Next.js sur Azure Static Web Apps

La prise en charge de Next.js sur Azure Static Web Apps peut être classée en deux modèles de déploiement :

Applications Next.js hybrides (préversion)

Static Web Apps prend en charge le déploiement de sites web Next.js hybrides. Cela permet la prise en charge de toutes les fonctionnalités de Next.js, comme le Routeur d’application et les composants React Server.

Les applications Next.js hybrides sont hébergées avec l’hôte de contenu statique globalement distribué Static Web Apps et les fonctions de back-end managées. Les fonctions de back-end Next.js sont hébergées sur une instance App Service dédiée pour garantir la compatibilité complète des fonctionnalités.

Avec les applications hybrides Next.js, les pages et les composants peuvent être affichés dynamiquement, statiquement ou de manière incrémentielle. Next.js détermine automatiquement le meilleur modèle de rendu et de mise en cache en fonction de votre extraction de données pour garantir des performances optimales.

Les principales fonctionnalités disponibles dans la préversion sont les suivantes :

Suivez le tutoriel Déployer des applications Next.js hybrides pour découvrir comment déployer une application Next.js hybride sur Azure.

Fonctionnalités non prises en charge dans la préversion

Les fonctionnalités suivantes de Static Web Apps ne sont pas prises en charge pour Next.js avec le rendu hybride :

  • API liées utilisant Azure Functions, Azure App Service, Azure Container Apps ou Gestion des API Azure.
  • Émulation et déploiement locaux de l’interface CLI SWA.
  • Prise en charge partielle du fichier staticwebapp.config.json.
    • Le secours de navigation n’est pas pris en charge.
    • Les réécritures de routes vers des routes au sein de l’application Next.js doivent être configurées dans next.config.js.
    • La configuration dans le fichier staticwebapp.config.json est prioritaire sur la configuration dans next.config.js.
    • La configuration du site Next.js doit être gérée avec next.config.js pour la compatibilité complète des fonctionnalités.
  • skip_app_build et skip_api_build ne peuvent pas être utilisés dans l’image de déploiement Azure/static-web-apps-deploy@v1.
  • La regénération statique incrémentielle (ISR) ne prend pas en charge la mise en cache des images.

Remarque

La taille maximale de l’application Next.js hybride est 250 Mo. Utilisez la fonctionnalité standalone de Next.js pour optimiser les tailles d’application. Si cela ne suffit pas, utilisez Next.js exporté en HTML statique si la taille d’application dont vous avez besoin est supérieure à 250 Mo.

Exportation HTML statique

Vous pouvez déployer un site statique Next.js à l’aide de la fonctionnalité d’exportation HTML statique de Next.js. Cette configuration génère des fichiers HTML statiques durant la build, qui sont mis en cache et réutilisés pour toutes les requêtes. Consultez les fonctionnalités prises en charge des exportations statiques Next.js.

Les sites Next.js statiques sont hébergés sur le réseau globalement distribué Azure Static Web Apps pour des performances optimales. Par ailleurs, vous pouvez ajouter des back-ends liés pour vos API.

Pour activer l’exportation statique d’une application Next.js, ajoutez output: 'export' à nextConfig dans next.config.js.

/** @type {import('next').NextConfig} */
const nextConfig = {
  output: 'export',
 
  // Optional: Change the output directory `out` -> `dist`
  // distDir: 'dist',
}
 
module.exports = nextConfig

Vous devez également spécifier output_location dans la configuration GitHub Actions/Azure DevOps. Par défaut, cette valeur est définie sur out conformément aux valeurs par défaut de Next.js. Si un emplacement de sortie personnalisé est indiqué dans la configuration de Next.js, la valeur fournie pour la génération doit correspondre à celle configurée dans l’exportation de Next.js.

Si vous utilisez des scripts de build personnalisés, définissez IS_STATIC_EXPORT sur true dans la tâche Static Web Apps du fichier YAML GitHub Actions/Azure DevOps.

L’exemple suivant montre le travail GitHub Actions qui est activé pour les exportations statiques.

      - name: Build And Deploy
        id: swa
        uses: azure/static-web-apps-deploy@latest
        with:
          azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_TOKEN }}
          repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for GitHub integrations (i.e. PR comments)
          action: "upload"
          app_location: "/" # App source code path
          api_location: "" # Api source code path - optional
          output_location: "out" # Built app content directory - optional
        env: # Add environment variables here
          IS_STATIC_EXPORT: true

Suivez le tutoriel Déployer des sites web Next.js au rendu statique pour découvrir comment déployer une application Next.js exportée de manière statique sur Azure.