Domine os comandos essenciais e crie seu primeiro projeto com Bun.js
bun init
- Modo interativobun init -y
- Aceita todas as opções padrãobun init my-project
- Cria projeto em pasta específicabun install
- Instala todas as dependênciasbun add express
- Adiciona dependênciabun add -d typescript
- Adiciona dev dependencybun remove express
- Remove dependênciabun run dev
- Executa script "dev"bun run build
- Executa script "build"bun index.ts
- Executa arquivo diretamenteVamos criar um projeto completo passo a passo para entender como o Bun funciona na prática.
# Criar diretório
mkdir restaurantix-api
cd restaurantix-api
# Inicializar projeto
bun init -y
restaurantix-api/ ├── package.json ├── tsconfig.json ├── index.ts └── README.md
{ "name": "restaurantix-api", "module": "index.ts", "type": "module", "devDependencies": { "@types/bun": "latest" }, "peerDependencies": { "typescript": "^5.0.0" } }
✨ Note que o Bun já configura TypeScript automaticamente!
// index.ts console.log("🚀 Iniciando Restaurantix API com Bun.js!"); const server = Bun.serve({ port: 3000, fetch(request) { const url = new URL(request.url); if (url.pathname === "/") { return new Response("🍽️ Restaurantix API está funcionando!"); } if (url.pathname === "/health") { return Response.json({ status: "ok", timestamp: new Date().toISOString(), runtime: "Bun.js" }); } return new Response("Rota não encontrada", { status: 404 }); }, }); console.log(`🌟 Servidor rodando em http://localhost:${server.port}`);
bun run index.ts
# Em outro terminal
curl http://localhost:3000
curl http://localhost:3000/health
Uma das grandes vantagens do Bun é o hot reload nativo. Vamos configurar:
{ "name": "restaurantix-api", "scripts": { "dev": "bun --watch index.ts", "start": "bun index.ts" } }
bun run dev
Agora qualquer mudança no código será refletida automaticamente!
Vamos ver a diferença de performance entre Bun e Node.js:
Agora é sua vez! Vamos expandir nosso servidor:
/api/restaurants
que retorna uma lista de restaurantes/api/orders
que retorna uma lista de pedidos// Adicione essas rotas no seu index.ts if (url.pathname === "/api/restaurants") { return Response.json([ { id: 1, name: "Pizza Palace", cuisine: "Italiana" }, { id: 2, name: "Burger House", cuisine: "Americana" } ]); } if (url.pathname === "/api/orders") { return Response.json([ { id: 1, restaurant: "Pizza Palace", status: "preparing" }, { id: 2, restaurant: "Burger House", status: "delivered" } ]); }