Estructura de proyecto en Next.js

Esta página proporciona una visión general de la estructura de archivos y carpetas de un proyecto de Next.js. Cubre archivos y carpetas de nivel superior, archivos de configuración y convenciones de enrutamiento dentro de los directorios app y pages.

Carpetas de nivel superior

appEnrutador de aplicación (App Router)
pagesEnrutador de páginas (Pages Router)
publicRecursos estáticos para servir
srcCarpeta fuente opcional de la aplicación

Archivos de nivel superior

Next.js
next.config.jsArchivo de configuración para Next.js
package.jsonDependencias y scripts del proyecto
instrumentation.tsArchivo de OpenTelemetry e Instrumentación
middleware.tsMiddleware de solicitudes de Next.js
.envVariables de entorno
.env.localVariables de entorno locales
.env.productionVariables de entorno de producción
.env.developmentVariables de entorno de desarrollo
.eslintrc.jsonArchivo de configuración para ESLint
.gitignoreArchivos y carpetas a ignorar en Git
next-env.d.tsArchivo de declaración TypeScript para Next.js
tsconfig.jsonArchivo de configuración para TypeScript
jsconfig.jsonArchivo de configuración para JavaScript

Convenciones de enrutamiento en app

Archivos de enrutamiento

layout.js .jsx .tsxDiseño (Layout)
page.js .jsx .tsxPágina
loading.js .jsx .tsxInterfaz de carga
not-found.js .jsx .tsxInterfaz de no encontrado
error.js .jsx .tsxInterfaz de error
global-error.js .jsx .tsxInterfaz de error global
route.js .tsEndpoint de API
template.js .jsx .tsxDiseño re-renderizado
default.js .jsx .tsxPágina de respaldo para rutas paralelas

Rutas anidadas

folderSegmento de ruta
folder/folderSegmento de ruta anidado

Rutas dinámicas

[folder]Segmento de ruta dinámica
[...folder]Segmento de ruta catch-all
[[...folder]]Segmento de ruta catch-all opcional

Grupos de rutas y carpetas privadas

(folder)Agrupar rutas sin afectar el enrutamiento
_folderExcluir carpeta y segmentos hijos del enrutamiento

Rutas paralelas e interceptadas

@folderSlot con nombre
(.)folderInterceptar mismo nivel
(..)folderInterceptar un nivel arriba
(..)(..)folderInterceptar dos niveles arriba
(...)folderInterceptar desde la raíz

Convenciones de archivos de metadatos

Iconos de aplicación

favicon.icoArchivo favicon
icon.ico .jpg .jpeg .png .svgArchivo de icono de app
icon.js .ts .tsxIcono de app generado
apple-icon.jpg .jpeg, .pngArchivo de icono de Apple
apple-icon.js .ts .tsxIcono de Apple generado

Imágenes Open Graph y Twitter

opengraph-image.jpg .jpeg .png .gifArchivo de imagen Open Graph
opengraph-image.js .ts .tsxImagen Open Graph generada
twitter-image.jpg .jpeg .png .gifArchivo de imagen Twitter
twitter-image.js .ts .tsxImagen Twitter generada

SEO

sitemap.xmlArchivo sitemap
sitemap.js .tsSitemap generado
robots.txtArchivo robots
robots.js .tsArchivo robots generado

Convenciones de enrutamiento en pages

Archivos especiales

_app.js .jsx .tsxApp personalizada
_document.js .jsx .tsxDocumento personalizado
_error.js .jsx .tsxPágina de error personalizada
404.js .jsx .tsxPágina de error 404
500.js .jsx .tsxPágina de error 500

Rutas

Convención de carpeta
index.js .jsx .tsxPágina principal
folder/index.js .jsx .tsxPágina anidada
Convención de archivo
index.js .jsx .tsxPágina principal
file.js .jsx .tsxPágina anidada

Rutas dinámicas

Convención de carpeta
[folder]/index.js .jsx .tsxSegmento de ruta dinámica
[...folder]/index.js .jsx .tsxSegmento de ruta catch-all
[[...folder]]/index.js .jsx .tsxSegmento de ruta catch-all opcional
Convención de archivo
[file].js .jsx .tsxSegmento de ruta dinámica
[...file].js .jsx .tsxSegmento de ruta catch-all
[[...file]].js .jsx .tsxSegmento de ruta catch-all opcional