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óriomkdir restaurantix-apicd restaurantix-api# Inicializar projetobun init -yrestaurantix-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 terminalcurl http://localhost:3000curl http://localhost:3000/healthUma 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 devAgora 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" }
]);
}