Capítulo 316 de 456
Next.js já otimiza bundles automaticamente (code splitting, tree-shaking); pra casos manuais, dois analisadores (Turbopack Bundle Analyzer experimental e @next/bundle-analyzer pra Webpack) ajudam a achar dependências grandes, e config específica resolve os padrões mais comuns de bloat.
next experimental-analyze (v16.1+): analisador integrado ao module graph do Turbopack, com filtro por rota/ambiente (client/server)/tipo e rastreamento de import chain; --output salva análise estática em .next/diagnostics/analyze pra comparar antes/depois.@next/bundle-analyzer: plugin Webpack tradicional, ativado via ANALYZE=true, gera relatório visual em três abas do browser.optimizePackageImports: opção experimental que carrega só os módulos realmente usados de libs com centenas de exports (ícones, utilitários), mantendo a conveniência de named imports; várias libs populares já são otimizadas automaticamente sem precisar listar.transpilePackages: força bundling de pacotes externos não pré-bundlados (comuns em monorepo ou vindos de node_modules).bundlePagesRouterDependencies: bundla automaticamente todos os pacotes externos (default false).serverExternalPackages: opt-out de pacotes específicos do bundling automático, mesmo com bundlePagesRouterDependencies: true.const nextConfig = {
experimental: {
optimizePackageImports: ['icon-library'],
},
}
import { codeToHtml } from 'shiki'
export default async function Page() {
const highlightedHtml = await codeToHtml(code, { lang: 'tsx', theme: 'github-dark' })
return <pre><code dangerouslySetInnerHTML={{ __html: highlightedHtml }} /></pre>
}
prism-react-renderer) num Client Component.const nextConfig = {
bundlePagesRouterDependencies: true,
serverExternalPackages: ['package-name'],
}
| Opção | Efeito |
|---|---|
optimizePackageImports | Só carrega módulos usados de libs com muitos exports |
transpilePackages | Força bundling de pacotes externos específicos |
bundlePagesRouterDependencies | Bundla automaticamente todos os pacotes externos (default false) |
serverExternalPackages | Opt-out de pacotes específicos do bundling automático |
transpilePackages, pode gerar erro ou bundle ineficiente.next experimental-analyze (Turbopack) ou @next/bundle-analyzer (Webpack).optimizePackageImports resolve o caso comum de libs de ícones/utilitários com muitos exports.serverExternalPackages é a válvula de escape quando bundling automático (bundlePagesRouterDependencies) causa problema num pacote específico.