next.config.js

Next.js peut être configuré via un fichier next.config.js à la racine de votre répertoire de projet (par exemple, à côté de package.json) avec un export par défaut.

next.config.js
// @ts-check

/** @type {import('next').NextConfig} */
const nextConfig = {
  /* options de configuration ici */
}

module.exports = nextConfig

Modules ECMAScript

next.config.js est un module Node.js standard, pas un fichier JSON. Il est utilisé par le serveur Next.js et les phases de build, et n'est pas inclus dans le build navigateur.

Si vous avez besoin de modules ECMAScript, vous pouvez utiliser next.config.mjs :

next.config.mjs
// @ts-check

/**
 * @type {import('next').NextConfig}
 */
const nextConfig = {
  /* options de configuration ici */
}

export default nextConfig

Bon à savoir : les extensions .cjs, .cts ou .mts pour next.config ne sont pas supportées actuellement.

Configuration sous forme de fonction

Vous pouvez également utiliser une fonction :

next.config.mjs
// @ts-check

export default (phase, { defaultConfig }) => {
  /**
   * @type {import('next').NextConfig}
   */
  const nextConfig = {
    /* options de configuration ici */
  }
  return nextConfig
}

Configuration asynchrone

Depuis Next.js 12.1.0, vous pouvez utiliser une fonction asynchrone :

next.config.js
// @ts-check

module.exports = async (phase, { defaultConfig }) => {
  /**
   * @type {import('next').NextConfig}
   */
  const nextConfig = {
    /* options de configuration ici */
  }
  return nextConfig
}

Phase

phase est le contexte actuel dans lequel la configuration est chargée. Vous pouvez voir les phases disponibles. Les phases peuvent être importées depuis next/constants :

next.config.js
// @ts-check

const { PHASE_DEVELOPMENT_SERVER } = require('next/constants')

module.exports = (phase, { defaultConfig }) => {
  if (phase === PHASE_DEVELOPMENT_SERVER) {
    return {
      /* options de configuration spécifiques au développement ici */
    }
  }

  return {
    /* options de configuration pour toutes les phases sauf le développement ici */
  }
}

TypeScript

Si vous utilisez TypeScript dans votre projet, vous pouvez utiliser next.config.ts pour utiliser TypeScript dans votre configuration :

next.config.ts
import type { NextConfig } from 'next'

const nextConfig: NextConfig = {
  /* options de configuration ici */
}

export default nextConfig

Les lignes commentées sont l'endroit où vous pouvez placer les configurations autorisées par next.config.js, qui sont définies dans ce fichier.

Cependant, aucune de ces configurations n'est obligatoire, et il n'est pas nécessaire de comprendre ce que fait chaque configuration. Cherchez plutôt les fonctionnalités que vous souhaitez activer ou modifier dans cette section et elles vous indiqueront quoi faire.

Évitez d'utiliser de nouvelles fonctionnalités JavaScript non disponibles dans votre version cible de Node.js. next.config.js ne sera pas parsé par Webpack ou Babel.

Cette page documente toutes les options de configuration disponibles :

Tests unitaires (expérimental)

Depuis Next.js 15.1, le package next/experimental/testing/server contient des utilitaires pour aider à tester unitairement les fichiers next.config.js.

La fonction unstable_getResponseFromNextConfig exécute les fonctions headers, redirects et rewrites de next.config.js avec les informations de requête fournies et renvoie un NextResponse avec les résultats du routage.

La réponse de unstable_getResponseFromNextConfig ne prend en compte que les champs de next.config.js et ne considère pas le middleware ou les routes du système de fichiers, donc le résultat en production peut différer du test unitaire.

import {
  getRedirectUrl,
  unstable_getResponseFromNextConfig,
} from 'next/experimental/testing/server'

const response = await unstable_getResponseFromNextConfig({
  url: 'https://nextjs.org/test',
  nextConfig: {
    async redirects() {
      return [{ source: '/test', destination: '/test2', permanent: false }]
    },
  },
})
expect(response.status).toEqual(307)
expect(getRedirectUrl(response)).toEqual('https://nextjs.org/test2')

allowedDevOrigins

Utilisez `allowedDevOrigins` pour configurer des origines supplémentaires pouvant interroger le serveur de développement.

appDir

Activez le routeur d'application pour utiliser les mises en page, le streaming et plus encore.

assetPrefix

Apprenez à utiliser l'option de configuration assetPrefix pour configurer votre CDN.

authInterrupts

Découvrez comment activer l'option de configuration expérimentale `authInterrupts` pour utiliser `forbidden` et `unauthorized`.

basePath

Utilisez `basePath` pour déployer une application Next.js sous un sous-chemin d'un domaine.

cacheLife

Apprenez à configurer les profils de cache avec cacheLife dans Next.js.

compression

Next.js fournit une compression gzip pour compresser le contenu rendu et les fichiers statiques, cela fonctionne uniquement avec la cible serveur. En savoir plus ici.

crossOrigin

Utilisez l'option `crossOrigin` pour ajouter un attribut crossOrigin aux balises `script` générées par `next/script`.

cssChunking

Utilisez l'option `cssChunking` pour contrôler la manière dont les fichiers CSS sont découpés dans votre application Next.js.

devIndicators

Options de configuration pour l'indicateur à l'écran qui fournit des informations contextuelles sur la route actuellement visualisée pendant le développement.

distDir

Définir un répertoire de build personnalisé à utiliser au lieu du répertoire .next par défaut.

dynamicIO

Découvrez comment activer le flag dynamicIO dans Next.js.

Variables d'environnement (env)

Apprenez à ajouter et accéder aux variables d'environnement dans votre application Next.js au moment de la construction.

eslint

Par défaut, Next.js signale les erreurs et avertissements ESLint lors des builds. Découvrez comment désactiver ce comportement ici.

expireTime

Personnalisez le délai d'expiration stale-while-revalidate pour les pages avec ISR activé.

exportPathMap

Personnalisez les pages qui seront exportées en tant que fichiers HTML lors de l'utilisation de `next export`.

generateBuildId

Configuration de l'identifiant de build, utilisé pour identifier la version actuelle de votre application en cours de service.

generateEtags

Par défaut, Next.js génère des etags pour chaque page. Découvrez comment désactiver la génération d'etags ici.

En-têtes HTTP

Ajoutez des en-têtes HTTP personnalisés à votre application Next.js.

htmlLimitedBots

Permet de spécifier une liste d'agents utilisateurs qui doivent recevoir des métadonnées de blocage.

httpAgentOptions

Next.js utilise automatiquement HTTP Keep-Alive par défaut. Découvrez comment désactiver HTTP Keep-Alive ici.

images

Configuration personnalisée pour le chargeur next/image

cacheHandler

Configurez le cache Next.js utilisé pour stocker et revalider les données afin d'utiliser n'importe quel service externe comme Redis, Memcached ou d'autres.

inlineCss

Activation du support pour le CSS inline.

Journalisation (logging)

Configurez la manière dont les récupérations de données sont journalisées dans la console lors de l'exécution de Next.js en mode développement.

mdxRs

Utilisez le nouveau compilateur Rust pour compiler les fichiers MDX dans l'App Router.

onDemandEntries

Configurez comment Next.js gère la conservation en mémoire et la suppression des pages créées en développement.

optimizePackageImports

Référence API pour l'option de configuration Next.js `optimizePackageImports`

output

Next.js trace automatiquement les fichiers nécessaires à chaque page pour faciliter le déploiement de votre application. Découvrez ici comment cela fonctionne.

pageExtensions

Étendre les extensions de page par défaut utilisées par Next.js lors de la résolution des pages dans le routeur Pages.

poweredByHeader

Par défaut, Next.js ajoute l'en-tête `x-powered-by`. Apprenez ici comment le désactiver.

ppr

Découvrez comment activer le prérendu partiel (Partial Prerendering) dans Next.js.

productionBrowserSourceMaps

Active la génération de source maps pour le navigateur lors de la build de production.

reactCompiler

Activez le React Compiler pour optimiser automatiquement le rendu des composants.

reactMaxHeadersLength

Longueur maximale des en-têtes émis par React et ajoutés à la réponse.

reactStrictMode

L'intégralité du runtime Next.js est désormais conforme au Mode Strict. Découvrez comment l'activer.

Redirections

Ajoutez des redirections à votre application Next.js.

Réécritures (rewrites)

Ajoutez des réécritures d'URL à votre application Next.js.

sassOptions

Configuration des options Sass.

serverActions

Configuration du comportement des Actions Serveur dans votre application Next.js.

serverComponentsHmrCache

Configuration du cache des réponses fetch dans les composants serveur lors des requêtes de rafraîchissement HMR.

serverExternalPackages

Exclure des dépendances spécifiques du bundle des composants serveur et utiliser le `require` natif de Node.js.

staleTimes

Apprenez comment remplacer le temps d'invalidation du cache du routeur client.

staticGeneration*

Apprenez à configurer la génération statique dans votre application Next.js.

Taint (marquage)

Active le marquage des objets et des valeurs.

trailingSlash

Configuration des pages Next.js pour qu'elles se résolvent avec ou sans barre oblique finale.

transpilePackages

Transpile et regroupe automatiquement les dépendances des packages locaux (comme les monorepos) ou des dépendances externes (`node_modules`).

turbopack

Configurer Next.js avec des options spécifiques à Turbopack

typedRoutes

Activer le support expérimental pour les liens typés statiquement.

TypeScript

Next.js signale les erreurs TypeScript par défaut. Découvrez comment désactiver ce comportement ici.

Importations depuis des URL

Configuration de Next.js pour permettre l'importation de modules depuis des URL externes.

useCache

Découvrez comment activer le flag useCache dans Next.js.

useLightningcss

Active le support expérimental pour Lightning CSS.

viewTransition

Active l'API ViewTransition de React dans App Router

webpack

Apprenez comment personnaliser la configuration webpack utilisée par Next.js

webVitalsAttribution

Apprenez à utiliser l'option webVitalsAttribution pour identifier la source des problèmes liés aux Web Vitals.

On this page