Caché de compilación en Integración Continua (CI)
Para mejorar el rendimiento de las compilaciones, Next.js guarda una caché en .next/cache que se comparte entre compilaciones.
Para aprovechar esta caché en entornos de Integración Continua (CI), su flujo de trabajo de CI deberá configurarse para persistir correctamente la caché entre compilaciones.
Si su CI no está configurado para persistir
.next/cacheentre compilaciones, puede ver un error de No se detectó caché.
Aquí hay algunas configuraciones de caché de ejemplo para proveedores de CI comunes:
Vercel
El almacenamiento en caché de Next.js se configura automáticamente. No es necesario realizar ninguna acción.
CircleCI
Edite su paso save_cache en .circleci/config.yml para incluir .next/cache:
steps:
- save_cache:
key: dependency-cache-{{ checksum "yarn.lock" }}
paths:
- ./node_modules
- ./.next/cacheSi no tiene una clave save_cache, siga la documentación de CircleCI sobre configuración de caché.
Travis CI
Agregue o combine lo siguiente en su .travis.yml:
cache:
directories:
- $HOME/.cache/yarn
- node_modules
- .next/cacheGitLab CI
Agregue o combine lo siguiente en su .gitlab-ci.yml:
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- node_modules/
- .next/cache/Netlify CI
Utilice Netlify Plugins con @netlify/plugin-nextjs.
AWS CodeBuild
Agregue (o combine) lo siguiente a su buildspec.yml:
cache:
paths:
- 'node_modules/**/*' # Almacenar `node_modules` para `yarn` o `npm i` más rápido
- '.next/cache/**/*' # Almacenar Next.js para reconstrucciones más rápidasGitHub Actions
Usando actions/cache de GitHub, agregue el siguiente paso en su archivo de flujo de trabajo:
uses: actions/cache@v3
with:
# Vea aquí para almacenamiento con `yarn` https://github.com/actions/cache/blob/main/examples.md#node---yarn o puede usar actions/setup-node
path: |
~/.npm
${{ github.workspace }}/.next/cache
# Genere nueva caché cuando cambien paquetes o archivos fuente
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx') }}
# Si cambian archivos fuente pero no paquetes, reconstruya desde caché previa
restore-keys: |
${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-Bitbucket Pipelines
Agregue o combine lo siguiente en su bitbucket-pipelines.yml al nivel superior (mismo nivel que pipelines):
definitions:
caches:
nextcache: .next/cacheLuego refiéralo en la sección caches del step de su pipeline:
- step:
name: your_step_name
caches:
- node
- nextcacheHeroku
Usando el almacenamiento personalizado de Heroku, agregue un array cacheDirectories en su package.json:
"cacheDirectories": [".next/cache"]Azure Pipelines
Usando la tarea Cache de Azure Pipelines, agregue la siguiente tarea a su archivo yaml antes de la tarea que ejecuta next build:
- task: Cache@2
displayName: 'Cache .next/cache'
inputs:
key: next | $(Agent.OS) | yarn.lock
path: '$(System.DefaultWorkingDirectory)/.next/cache'