Aller au contenu

Bun

// server.ts
import { bunAdapter } from 'lacis/adapters'
const createServer = bunAdapter.createHandler('./routes')
createServer({
port: 3000,
isDev: process.env.NODE_ENV !== 'production',
})
  • Handler fetch natif — les requêtes sont gérées comme des objets Request/Response standards, enveloppés dans des classes BunRequest/BunResponse légères
  • TransformStream pour SSEBun.serve() a besoin de la Response de façon synchrone, donc initSSE() doit être appelé avant le premier await dans votre handler
  • Parsing JSON plus rapide — délègue directement au parser JSON natif de Bun
export async function GET(req, res) {
res.initSSE() // doit être avant tout await
const data = await fetchSomething()
// ...
}
OptionTypeDéfautDescription
portnumber3000Port d’écoute
isDevbooleanfalseActive le mode développement
defaultHeadersRecord<string, string>Headers ajoutés à chaque réponse
clusterobjectMulti-worker via reusePort
corsCorsConfigPolitique CORS
middlewareobjectHooks beforeRequest, afterRequest, onError
hooksobjectHooks onNotFound, onShutdown

Lacis spawn des processus workers avec Bun.spawn() et utilise reusePort: true pour que l’OS distribue les connexions entre les workers.

createServer({
port: 3000,
cluster: { enabled: true, workers: 4 },
})

Les workers vérifient le PID du processus principal toutes les 2 secondes et s’arrêtent proprement si le principal est disparu.

  1. Build :

    Fenêtre de terminal
    bun run build
  2. Démarrage :

    Fenêtre de terminal
    bun dist/server.js