Structure de projet Next.js

Cette page fournit une vue d'ensemble de la structure des fichiers et dossiers d'un projet Next.js. Elle couvre les fichiers et dossiers de premier niveau, les fichiers de configuration, et les conventions de routage dans les répertoires app et pages.

Dossiers de premier niveau

appRouteur d'application (App Router)
pagesRouteur de pages (Pages Router)
publicRessources statiques à servir
srcDossier source optionnel

Fichiers de premier niveau

Next.js
next.config.jsFichier de configuration Next.js
package.jsonDépendances et scripts du projet
instrumentation.tsFichier OpenTelemetry et instrumentation
middleware.tsMiddleware de requête Next.js
.envVariables d'environnement
.env.localVariables d'environnement locales
.env.productionVariables d'environnement production
.env.developmentVariables d'environnement développement
.eslintrc.jsonFichier de configuration ESLint
.gitignoreFichiers et dossiers à ignorer pour Git
next-env.d.tsFichier de déclaration TypeScript
tsconfig.jsonFichier de configuration TypeScript
jsconfig.jsonFichier de configuration JavaScript

Conventions de routage app

Fichiers de routage

layout.js .jsx .tsxMise en page (Layout)
page.js .jsx .tsxPage
loading.js .jsx .tsxUI de chargement
not-found.js .jsx .tsxUI non trouvée
error.js .jsx .tsxUI d'erreur
global-error.js .jsx .tsxUI d'erreur globale
route.js .tsPoint de terminaison API
template.js .jsx .tsxMise en page re-rendue
default.js .jsx .tsxPage de secours pour routes parallèles

Routes imbriquées

folderSegment de route
folder/folderSegment de route imbriqué

Routes dynamiques

[folder]Segment de route dynamique
[...folder]Segment attrape-tout (catch-all)
[[...folder]]Segment attrape-tout optionnel

Groupes de routes et dossiers privés

(folder)Grouper des routes sans affecter le routage
_folderExclure un dossier et ses enfants du routage

Routes parallèles et interceptées

@folderEmplacement nommé (slot)
(.)folderInterception même niveau
(..)folderInterception niveau supérieur
(..)(..)folderInterception deux niveaux au-dessus
(...)folderInterception depuis la racine

Conventions de fichiers de métadonnées

Icônes d'application

favicon.icoFichier favicon
icon.ico .jpg .jpeg .png .svgFichier icône d'application
icon.js .ts .tsxIcône générée
apple-icon.jpg .jpeg, .pngFichier icône Apple
apple-icon.js .ts .tsxIcône Apple générée

Images Open Graph et Twitter

opengraph-image.jpg .jpeg .png .gifFichier image Open Graph
opengraph-image.js .ts .tsxImage Open Graph générée
twitter-image.jpg .jpeg .png .gifFichier image Twitter
twitter-image.js .ts .tsxImage Twitter générée

SEO

sitemap.xmlFichier sitemap
sitemap.js .tsSitemap généré
robots.txtFichier robots
robots.js .tsFichier robots généré

Conventions de routage pages

Fichiers spéciaux

_app.js .jsx .tsxApplication personnalisée
_document.js .jsx .tsxDocument personnalisé
_error.js .jsx .tsxPage d'erreur personnalisée
404.js .jsx .tsxPage d'erreur 404
500.js .jsx .tsxPage d'erreur 500

Routes

Convention de dossier
index.js .jsx .tsxPage d'accueil
folder/index.js .jsx .tsxPage imbriquée
Convention de fichier
index.js .jsx .tsxPage d'accueil
file.js .jsx .tsxPage imbriquée

Routes dynamiques

Convention de dossier
[folder]/index.js .jsx .tsxSegment de route dynamique
[...folder]/index.js .jsx .tsxSegment attrape-tout (catch-all)
[[...folder]]/index.js .jsx .tsxSegment attrape-tout optionnel
Convention de fichier
[file].js .jsx .tsxSegment de route dynamique
[...file].js .jsx .tsxSegment attrape-tout (catch-all)
[[...file]].js .jsx .tsxSegment attrape-tout optionnel