Capítulo 227 de 456

output

Core Idea

Durante next build, o Next.js rastreia (Output File Tracing) quais arquivos cada página realmente precisa, permitindo deploys drasticamente menores; output: 'standalone' automatiza a cópia desses arquivos para uma pasta autocontida.

Key Concepts

  • Output File Tracing: usa @vercel/nft para analisar estaticamente import/require/fs e determinar arquivos necessários por página. O servidor de produção também é rastreado, output em .next/next-server.js.nft.json.
  • output: 'standalone': cria .next/standalone com apenas os arquivos necessários (incluindo parte seletiva de node_modules), dispensando npm install no destino. Gera um server.js mínimo que substitui next start.
  • server.js standalone NÃO copia public/ nem .next/static por padrão (idealmente servidos por CDN) — copiar manualmente se necessário.
  • outputFileTracingRoot: em monorepos, define a raiz usada pro tracing (por padrão é o diretório do projeto).
  • outputFileTracingExcludes / outputFileTracingIncludes: objetos cujas chaves são route globs (ex.: /api/hello) e valores são glob patterns resolvidos a partir da raiz do projeto, para excluir arquivos incorretamente incluídos ou incluir arquivos que o tracing perdeu.

Code Examples

module.exports = { output: 'standalone' }
cp -r public .next/standalone/ && cp -r .next/static .next/standalone/.next/
node .next/standalone/server.js
module.exports = {
  outputFileTracingExcludes: { '/api/hello': ['./un-necessary-folder/**/*'] },
  outputFileTracingIncludes: {
    '/api/another': ['./necessary-folder/**/*'],
    '/api/login/\\[\\[\\.\\.\\.slug\\]\\]': ['./node_modules/aws-crt/dist/bin/**/*'],
  },
}
  • O que demonstra: build standalone completo e ajuste fino do tracing por rota.

Reference Tables

Env var (server.js standalone)Uso
PORTPorta do servidor
HOSTNAMEHost, ex. 0.0.0.0

Key Takeaways

  1. outputFileTracingExcludes/Includes só afetam rotas com trace de servidor: Edge Runtime e páginas totalmente estáticas não são afetadas.
  2. Em monorepo, combine outputFileTracingRoot com outputFileTracingIncludes para trazer arquivos de fora da pasta do projeto.
  3. Mantenha os globs o mais estreitos possível (evite **/* na raiz do repo) para não inflar o trace.

Connects To

  • standalone deployment: elimina a necessidade do antigo target serverless (deprecated).