fix: switch production build to webpack

This commit is contained in:
Esdras Renan 2025-11-05 21:15:10 -03:00
parent 1079111de2
commit ea8612b8fd
7 changed files with 48 additions and 31 deletions

View file

@ -6,7 +6,7 @@ Este documento consolida o estado atual do ambiente de desenvolvimento, descreve
- **Bun (runtime padrão)**: 1.3+ já instalado no runner e VPS (`bun --version`). Após instalar localmente, exporte `PATH="$HOME/.bun/bin:$PATH"` para tornar o binário disponível. Use `bun install`, `bun run dev:bun`, `bun run convex:dev:bun`, `bun run build:bun` e `bun test` como fluxo principal (scripts Node continuam disponíveis como fallback).
- **Node.js**: mantenha a versão 20.9+ instalada para ferramentas auxiliares (Prisma CLI, scripts legados em Node) quando não estiver usando o runtime do Bun.
- **Next.js 15.5.5**: Projeto voltou para a versão estável (`next@15.5.5`) com Turbopack como bundler padrão e whitelist de domínios garantida pelo middleware.
- **Next.js 16**: Projeto roda em `next@16.0.1` com Turbopack apenas no ambiente de desenvolvimento; builds de produção usam o webpack padrão do framework.
- **Lint/Test/Build**: `bun run lint`, `bun test`, `bun run build:bun`. O test runner do Bun já roda em modo não interativo; utilize `bunx vitest --watch` apenas quando precisar do modo watch manualmente.
- **Banco DEV**: SQLite em `prisma/prisma/db.dev.sqlite`. Defina `DATABASE_URL="file:./prisma/db.dev.sqlite"` ao chamar CLI do Prisma.
- **Desktop (Tauri)**: fonte em `apps/desktop`. Usa Radix tabs + componentes shadcn-like, integra com os endpoints `/api/machines/*` e suporta atualização automática via GitHub Releases.
@ -35,12 +35,11 @@ Este documento consolida o estado atual do ambiente de desenvolvimento, descreve
> **Por quê inline?** Evitamos declarar `DATABASE_URL` em `prisma/.env` porque o Prisma lê também o `.env` da raiz (produção). O override inline garante isolamento do banco DEV.
## Next.js 15 (estável)
## Next.js 16 (estável)
- Mantemos o projeto em `next@15.5.5`, priorizando estabilidade enquanto acompanhamos as novidades do 16.
- **React 18.2**: voltamos para a versão suportada oficialmente pelo Next 15. Evite APIs exclusivas do React 19 (`use(...)`, `useActionState`, etc.).
- **Turbopack** segue como bundler padrão, sem flags experimentais adicionais.
- **Whitelist de hosts**: o release estável 15.5 não aceita `server.allowedHosts` (vide [`invalid-next-config`](https://nextjs.org/docs/messages/invalid-next-config)), portanto bloqueamos domínios exclusivamente via `middleware.ts`.
- Mantemos o projeto em `next@16.0.1`, com React 19 e o App Router completo.
- **Bundlers**: Turbopack permanece habilitado no `next dev`/`bun run dev:bun` pela velocidade, mas o `next build --webpack` é o caminho oficial para produção. Execute `bun run build:turbopack` apenas para reproduzir bugs.
- **Whitelist de hosts**: o release estável continua sem aceitar `server.allowedHosts` (vide [`invalid-next-config`](https://nextjs.org/docs/messages/invalid-next-config)), portanto bloqueamos domínios exclusivamente via `middleware.ts`.
### Editor rich text (TipTap) — menções de ticket
@ -53,9 +52,10 @@ Este documento consolida o estado atual do ambiente de desenvolvimento, descreve
- `bun run lint`: executa ESLint (flat config) sobre os arquivos do projeto.
- `bun test`: roda a suíte de testes utilizando o runner nativo do Bun. Para modo watch, use `bunx vitest --watch` manualmente.
- `bun run build:bun`: `next build --turbopack` usando o runtime Bun. `bun run build` permanece disponível como fallback em Node.
- `bun run build:bun`: `next build --webpack` usando o runtime Bun (webpack).
- Scripts com Bun (padrão atual): `bun run dev:bun`, `bun run convex:dev:bun`, `bun run build:bun`, `bun run start:bun`. Eles mantêm os scripts existentes, apenas forçando o runtime do Bun via `bun run --bun`. O `cross-env` garante `NODE_ENV` consistente (`development`/`production`).
- Fallback Webpack disponível via `bun run dev:webpack` / `bun run build:webpack` quando Turbopack não coopera (caso observado em combinações Bun + Next 16).
- `bun run build:turbopack`: build experimental com Turbopack. Use apenas para debugging/local, pois ainda causa inconsistências em produção.
- `bun run dev:webpack`: fallback do Next em dev quando o Turbopack apresentar problemas.
- `bun run prisma:generate`: necessário antes do build quando o client Prisma muda. Para migrações use `bunx prisma migrate deploy`.
### Automação no CI

View file

@ -332,9 +332,11 @@ Benefícios
- Guia CI/CD Desktop: `apps/desktop/docs/guia-ci-cd-web-desktop.md`
- Docs Convex selfhosted: imagem oficial `ghcr.io/get-convex/convex-backend`
## Turbopack (Next.js)
- O projeto usa Turbopack em dev e build.
- Scripts (package.json):
## Bundlers (Next.js)
- Em desenvolvimento utilizamos Turbopack (`next dev --turbopack`) pela velocidade incremental.
- Builds de produção rodam com `next build --webpack` para evitar mismatches de chunks vistos com o Turbopack em produção.
- Scripts principais (package.json):
- `dev`: `next dev --turbopack`
- `build`: `next build --turbopack`
- O workflow de CI executa `bun run build:bun` (que já chama Turbopack via script), e a stack utiliza `bun run start:bun` sobre o artefato gerado.
- `build`: `next build --webpack`
- `build:turbopack`: `next build --turbopack` (uso pontual para debug)
- O workflow de CI executa `bun run build:bun` (que agora roda `next build --webpack` via Bun) e a stack continua a usar `bun run start:bun` sobre o artefato gerado.