Switch workflows to Bun install/test and update pnpm

This commit is contained in:
Esdras Renan 2025-11-04 23:21:41 -03:00
parent c3237dfb64
commit 775956c160
37 changed files with 2618 additions and 113 deletions

View file

@ -4,10 +4,10 @@ Este documento consolida o estado atual do ambiente de desenvolvimento, descreve
## Resumo rápido
- **Node/PNPM**: Node 20.9+ (alinhado ao requisito do Next 15) + pnpm 9 (habilite via `corepack enable && corepack prepare pnpm@9 --activate`).
- **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 `pnpm dev:bun` / `pnpm convex:dev:bun` / `pnpm build:bun` / `pnpm start:bun` para executar os scripts com `bun run --bun` (scripts Node continuam disponíveis como fallback).
- **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/pnpm**: Node 20.9+ permanece obrigatório para ferramentas CLI; pnpm 10 está disponível como alternativa apenas para fluxos do desktop/Tauri.
- **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.
- **Lint/Test/Build**: `pnpm lint`, `pnpm test`, `pnpm build`. O script de testes usa `vitest --run --passWithNoTests`, eliminando o modo watch interativo.
- **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.
- **CI**: Workflow `Quality Checks` roda lint/test/build para pushes e PRs na `main`, além do pipeline de deploy existente.
@ -17,17 +17,18 @@ Este documento consolida o estado atual do ambiente de desenvolvimento, descreve
1. Gere/atualize o schema local:
```bash
DATABASE_URL="file:./prisma/db.dev.sqlite" pnpm exec prisma db push
DATABASE_URL="file:./prisma/db.dev.sqlite" pnpm prisma:generate
DATABASE_URL="file:./prisma/db.dev.sqlite" pnpm auth:seed
bun install
DATABASE_URL="file:./prisma/db.dev.sqlite" bunx prisma db push
DATABASE_URL="file:./prisma/db.dev.sqlite" bun run prisma:generate
DATABASE_URL="file:./prisma/db.dev.sqlite" bun run auth:seed
```
2. Rode o app Next.js:
```bash
pnpm dev:bun
bun run dev:bun
```
> Alternativas: `pnpm dev` (Node) ou `pnpm dev:webpack` se precisar do fallback oficial.
> Alternativas: `pnpm dev` (Node) ou `bun run dev:webpack` se precisar do fallback oficial.
3. Credenciais padrão (seed): `admin@sistema.dev / admin123`.
4. Herdou dados antigos? Execute `node scripts/remove-legacy-demo-users.mjs` para limpar contas demo legadas.
@ -50,12 +51,12 @@ Este documento consolida o estado atual do ambiente de desenvolvimento, descreve
## Comandos de qualidade
- `pnpm lint`: executa ESLint (flat config) sobre os arquivos do projeto.
- `pnpm test`: Vitest em modo não interativo (`--run --passWithNoTests`). Use `pnpm test -- --watch` somente quando quiser rodar em watch localmente. Inclui testes de API (rotas `/api/machines/*`) e utilitários de SMTP.
- `pnpm build`: `next build --turbopack`.
- Scripts com Bun (padrão atual): `pnpm dev:bun`, `pnpm convex:dev:bun`, `pnpm build:bun`, `pnpm start:bun`. Eles mantêm o `pnpm` como orquestrador, apenas forçando o runtime do Bun via `bun run --bun`. O `cross-env` garante `NODE_ENV` consistente (`development`/`production`) para evitar warnings/falhas no Next.
- Fallback Webpack disponível via `pnpm dev:webpack` / `pnpm build:webpack` quando Turbopack não coopera (caso observado em combinações Bun + Next 16).
- `pnpm prisma:generate`: necessário antes do build quando o client Prisma muda.
- `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.
- 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 prisma:generate`: necessário antes do build quando o client Prisma muda. Para migrações use `bunx prisma migrate deploy`.
### Automação no CI
@ -63,17 +64,17 @@ Arquivo: `.github/workflows/quality-checks.yml`
Etapas:
1. Instala dependências (`pnpm install --frozen-lockfile`).
2. `pnpm prisma:generate`.
3. `pnpm lint`.
4. `pnpm test`.
5. `pnpm build:bun` (Bun 1.3.1 instalado via `oven-sh/setup-bun`).
1. Instala dependências (`bun install --frozen-lockfile`).
2. `bun run prisma:generate`.
3. `bun run lint`.
4. `bun test`.
5. `bun run build:bun`.
O workflow dispara em todo `push`/`pull_request` para `main` e fornece feedback imediato sem depender do pipeline de deploy.
## Testes rápidos via curl (Convites & acessos)
1. Rode `pnpm dev:bun` (ou `pnpm dev` se preferir Node) e autentique-se em `http://localhost:3000/login` usando `admin@sistema.dev / admin123`.
1. Rode `bun run dev:bun` (ou `pnpm dev` se preferir Node) e autentique-se em `http://localhost:3000/login` usando `admin@sistema.dev / admin123`.
2. Copie o valor do cookie `BETTER_AUTH_SESSION` e exporte no shell: `export COOKIE="BETTER_AUTH_SESSION=<valor>"`.
### Usuários
@ -139,7 +140,7 @@ curl -i -X PATCH http://localhost:3000/api/admin/invites/$INVITE_ID \
### Build local
```bash
corepack enable && corepack prepare pnpm@9 --activate
corepack enable && corepack prepare pnpm@10.20.0 --activate
pnpm -C apps/desktop install
VITE_APP_URL=http://localhost:3000 \
VITE_API_BASE_URL=http://localhost:3000 \