Estructura de proyecto en Next.js

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

Haga clic en los nombres de archivos y carpetas para aprender más sobre cada convención.

Carpetas de nivel superior

Las carpetas de nivel superior se utilizan para organizar el código y los recursos estáticos de su aplicación.

Segmentos de ruta a segmentos de ruta
appEnrutador de la aplicación (App Router)
pagesEnrutador de páginas (Pages Router)
publicRecursos estáticos para servir
srcCarpeta opcional de código fuente

Archivos de nivel superior

Los archivos de nivel superior se utilizan para configurar su aplicación, gestionar dependencias, ejecutar middleware, integrar herramientas de monitoreo y definir variables de entorno.

Next.js
next.config.jsArchivo de configuración para Next.js
package.jsonDependencias y scripts del proyecto
instrumentation.tsArchivo para OpenTelemetry e Instrumentación
middleware.tsMiddleware de solicitudes en 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

Las siguientes convenciones de archivos se utilizan para definir rutas y manejar metadatos en el enrutador app.

Archivos de enrutamiento

layout.js .jsx .tsxDiseño (Layout)
page.js .jsx .tsxPágina
loading.js .jsx .tsxUI de carga
not-found.js .jsx .tsxUI de no encontrado
error.js .jsx .tsxUI de error
global-error.js .jsx .tsxUI de error global
route.js .tsEndpoint 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

@folderRanura nombrada
(.)folderInterceptar mismo nivel
(..)folderInterceptar un nivel arriba
(..)(..)folderInterceptar dos niveles arriba
(...)folderInterceptar desde raíz

Convenciones de archivos de metadatos

Iconos de la 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 para 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

Las siguientes convenciones de archivos se utilizan para definir rutas en el enrutador 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