Comandos Básicos e Primeiro Projeto
Domine os comandos essenciais e crie seu primeiro projeto com Bun.js
20 minutos
Iniciante
Comandos Básicos do Bun
1. bun init - Criar Projeto
bun init - Modo interativobun init -y - Aceita todas as opções padrãobun init my-project - Cria projeto em pasta específica2. bun install - Gerenciar Dependências
bun install - Instala todas as dependênciasbun add express - Adiciona dependênciabun add -d typescript - Adiciona dev dependencybun remove express - Remove dependência3. bun run - Executar Scripts
bun run dev - Executa script "dev"bun run build - Executa script "build"bun index.ts - Executa arquivo diretamenteCriando Nosso Primeiro Projeto
Vamos criar um projeto completo passo a passo para entender como o Bun funciona na prática.
Passo 1: Inicializar o Projeto
# Criar diretóriomkdir restaurantix-apicd restaurantix-api# Inicializar projetobun init -yPasso 2: Estrutura Criada
restaurantix-api/ ├── package.json ├── tsconfig.json ├── index.ts └── README.md
Passo 3: Analisar package.json
{
"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!
Nosso Primeiro Código
index.ts - Servidor HTTP Básico
// 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}`);Executar o Servidor
bun run index.tsVocê verá a mensagem: "🌟 Servidor rodando em http://localhost:3000"
Testar as Rotas
# Em outro terminalcurl http://localhost:3000curl http://localhost:3000/healthHot Reload Automático
Uma das grandes vantagens do Bun é o hot reload nativo. Vamos configurar:
Adicionar Script no package.json
{
"name": "restaurantix-api",
"scripts": {
"dev": "bun --watch index.ts",
"start": "bun index.ts"
}
}Executar com Hot Reload
bun run devAgora qualquer mudança no código será refletida automaticamente!
⚡ Comparação de Performance
Vamos ver a diferença de performance entre Bun e Node.js:
Node.js
- • Startup: ~200ms
- • Requests/sec: ~15,000
- • Memória: ~50MB
- • TypeScript: Precisa ts-node
Bun.js
- • Startup: ~5ms
- • Requests/sec: ~45,000
- • Memória: ~25MB
- • TypeScript: Nativo
🚀 Bun é 3x mais rápido!
🎯 Exercício Prático
Agora é sua vez! Vamos expandir nosso servidor:
Desafio:
- 1. Adicione uma rota
/api/restaurantsque retorna uma lista de restaurantes - 2. Adicione uma rota
/api/ordersque retorna uma lista de pedidos - 3. Implemente tratamento de erro para rotas não encontradas
- 4. Adicione logs coloridos usando console.log
Solução:
// 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" }
]);
}