Skip to content

Instantly share code, notes, and snippets.

@etc-tiago
Created February 25, 2026 11:43
Show Gist options
  • Select an option

  • Save etc-tiago/e3ec496966275a75f4c09540827d3546 to your computer and use it in GitHub Desktop.

Select an option

Save etc-tiago/e3ec496966275a75f4c09540827d3546 to your computer and use it in GitHub Desktop.

Guia de comandos: pnpm → Bun

Referência rápida dos comandos no monorepo após a migração para Bun. Use este guia para substituir o que era feito com pnpm.


1. Instalação de dependências

O que fazer Antes (pnpm) Agora (Bun)
Instalar tudo pnpm install bun install
Lockfile exato pnpm install --frozen-lockfile bun install --frozen-lockfile
Adicionar pacote (raiz) pnpm add lodash bun add lodash
Adicionar dev (raiz) pnpm add -D vitest bun add -d vitest

2. Executar scripts na raiz

Scripts do package.json da raiz (build, test, typecheck, etc.):

Antes (pnpm) Agora (Bun)
pnpm build bun run build
pnpm test bun run test
pnpm typecheck bun run typecheck
pnpm lint bun run lint
pnpm gera-env bun run gera-env
pnpm ci:test bun run ci:test

Forma genérica: pnpm <script>bun run <script>.


3. Executar comando em um pacote (filter)

Para rodar um script apenas em um workspace (por nome ou padrão):

Antes (pnpm) Agora (Bun)
pnpm --filter=@clinica/database migrate bun run --filter @clinica/database migrate
pnpm --filter=@clinica/web-app dev bun run --filter @clinica/web-app dev
pnpm --filter="./packages/*" build bun run --filter "./packages/*" build

Sintaxe Bun: bun run --filter <nome-ou-padrão> <script>

Exemplos por nome do pacote (package.json"name": "..."):

# Migrar banco (pacote @clinica/database)
bun run --filter @clinica/database migrate

# Dev do app clinica
bun run --filter @clinica/web-app dev

# Typecheck só no trigger
bun run --filter @clinica/trigger typecheck

Exemplos por padrão (glob):

# Todos os pacotes em packages/
bun run --filter "./packages/*" build

# Excluir um pacote
bun run --filter "pkg-*" --filter "!pkg-c" test

4. Executar comando dentro da pasta do pacote

Se você já está na pasta do workspace (ex.: cd services/web/apps/clinica):

Antes (pnpm) Agora (Bun)
pnpm dev bun run dev
pnpm build bun run build
pnpm test bun run test

Ou chamar o binário direto (quando existir):

bun run dev
# ou, se o script chama um binário instalado:
bunx vite dev

5. Executar binário sem instalar (dlx → bunx)

Comandos “run once” de pacotes (CLI) sem adicionar ao package.json:

Antes (pnpm) Agora (Bun)
pnpm dlx tailwindcss-cli ... bunx tailwindcss-cli ...
pnpm dlx shadcn@latest add bunx shadcn@latest add
pnpm dlx trigger.dev@4.0.2 dev bunx trigger.dev@4.0.2 dev

Regra: pnpm dlx <pacote> [args]bunx <pacote> [args]


6. Instalar dependência em um workspace específico

Adicionar pacote só em um projeto do monorepo:

Antes (pnpm) Agora (Bun)
pnpm add lodash --filter @clinica/web-app bun add lodash --filter @clinica/web-app
pnpm add -D vitest --filter @clinica/zod bun add -d vitest --filter @clinica/zod

Ou entrando na pasta do pacote e rodando bun add ... / bun add -d ... lá.


7. Resumo rápido

Ação pnpm Bun
Instalar pnpm install bun install
Script na raiz pnpm <script> bun run <script>
Script em um pacote pnpm --filter=<pkg> <script> bun run --filter <pkg> <script>
Na pasta do pacote pnpm <script> bun run <script>
CLI sem instalar pnpm dlx <pkg> bunx <pkg>
Add dependência (raiz) pnpm add <pkg> bun add <pkg>
Add dev (raiz) pnpm add -D <pkg> bun add -d <pkg>

8. Documentação oficial

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment