Capítulo 30 de 456
Next.js grava cache de build em .next/cache, compartilhado entre builds; sem persistir essa pasta no seu provedor de CI, cada build recompila do zero (e pode disparar o erro "No Cache Detected").
.next/cache: diretório que precisa ser persistido/restaurado entre execuções de CI para acelerar next build.# GitHub Actions — actions/cache
uses: actions/cache@v4
with:
path: |
~/.npm
${{ github.workspace }}/.next/cache
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx') }}
restore-keys: |
${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-
restore-keys de fallback quando só o lockfile bate.# CircleCI
steps:
- save_cache:
key: dependency-cache-{{ checksum "yarn.lock" }}
paths:
- ./node_modules
- ./.next/cache
.next/cache junto de node_modules.| Provedor | Onde configurar |
|---|---|
| Vercel | Automático, sem ação |
| CircleCI | save_cache em .circleci/config.yml, incluir .next/cache |
| Travis CI | cache.directories em .travis.yml |
| GitLab CI | cache.paths em .gitlab-ci.yml |
| Netlify | Plugin @netlify/plugin-nextjs |
| AWS CodeBuild | cache.paths em buildspec.yml |
| GitHub Actions | actions/cache@v4, path + key + restore-keys |
| Bitbucket Pipelines | definitions.caches + referenciar em step.caches |
| Heroku | cacheDirectories no package.json |
| Azure Pipelines | Task Cache@2 antes do next build |
| Jenkins | Plugin Job Cacher, arbitraryFileCache por path |
.next/cache no CI: builds sempre partem do zero, mais lentos e sujeitos ao erro "No Cache Detected"..next/cache) é diferente de cache de dados (fetch/use cache); este capítulo é só sobre acelerar next build em CI..next/cache manualmente na config de cache do provedor.restore-keys.next build que geram o conteúdo cacheado em .next/cache.