Structure d'un projet Next.js

Cette page fournit une vue d'ensemble de la structure d'un projet d'application 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.

Cliquez sur les noms de fichiers et dossiers pour en savoir plus sur chaque convention.

Dossiers de premier niveau

Les dossiers de premier niveau sont utilisés pour organiser le code et les ressources statiques de votre application.

Segments de route en segments de chemin
appRouteur App
pagesRouteur Pages
publicRessources statiques à servir
srcDossier source optionnel de l'application

Fichiers de premier niveau

Les fichiers de premier niveau sont utilisés pour configurer votre application, gérer les dépendances, exécuter des middlewares, intégrer des outils de surveillance et définir des variables d'environnement.

Next.js
next.config.jsFichier de configuration pour 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 de production
.env.developmentVariables d'environnement de développement
.eslintrc.jsonFichier de configuration pour ESLint
.gitignoreFichiers et dossiers Git à ignorer
next-env.d.tsFichier de déclaration TypeScript pour Next.js
tsconfig.jsonFichier de configuration pour TypeScript
jsconfig.jsonFichier de configuration pour JavaScript

Conventions de routage app

Les conventions de fichiers suivantes sont utilisées pour définir les routes et gérer les métadonnées dans le routeur app.

Fichiers de routage

layout.js .jsx .tsxLayout
page.js .jsx .tsxPage
loading.js .jsx .tsxUI de chargement
not-found.js .jsx .tsxUI introuvable
error.js .jsx .tsxUI d'erreur
global-error.js .jsx .tsxUI d'erreur globale
route.js .tsPoint de terminaison API
template.js .jsx .tsxLayout re-rendu
default.js .jsx .tsxPage de secours pour les routes parallèles

Routes imbriquées

folderSegment de route
folder/folderSegment de route imbriqué

Routes dynamiques

[folder]Segment de route dynamique
[...folder]Segment de route attrape-tout
[[...folder]]Segment de route attrape-tout optionnel

Groupes de routes et dossiers privés

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

Routes parallèles et interceptées

@folderEmplacement nommé
(.)folderInterception même niveau
(..)folderInterception un niveau au-dessus
(..)(..)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 d'application 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

Les conventions de fichiers suivantes sont utilisées pour définir les routes dans le routeur pages.

Fichiers spéciaux

_app.js .jsx .tsxApp 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 de route attrape-tout
[[...folder]]/index.js .jsx .tsxSegment de route attrape-tout optionnel
Convention de fichier
[file].js .jsx .tsxSegment de route dynamique
[...file].js .jsx .tsxSegment de route attrape-tout
[[...file]].js .jsx .tsxSegment de route attrape-tout optionnel