Bun
Point d’entrée
Section intitulée « Point d’entrée »// server.tsimport { bunAdapter } from 'lacis/adapters'
const createServer = bunAdapter.createHandler('./routes')
createServer({ port: 3000, isDev: process.env.NODE_ENV !== 'production',})Différences avec l’adaptateur Node
Section intitulée « Différences avec l’adaptateur Node »- Handler fetch natif — les requêtes sont gérées comme des objets
Request/Responsestandards, enveloppés dans des classesBunRequest/BunResponselégères - TransformStream pour SSE —
Bun.serve()a besoin de laResponsede façon synchrone, doncinitSSE()doit être appelé avant le premierawaitdans votre handler - Parsing JSON plus rapide — délègue directement au parser JSON natif de Bun
Contrainte SSE
Section intitulée « Contrainte SSE »export async function GET(req, res) { res.initSSE() // doit être avant tout await
const data = await fetchSomething() // ...}Options de configuration
Section intitulée « Options de configuration »| Option | Type | Défaut | Description |
|---|---|---|---|
port | number | 3000 | Port d’écoute |
isDev | boolean | false | Active le mode développement |
defaultHeaders | Record<string, string> | — | Headers ajoutés à chaque réponse |
cluster | object | — | Multi-worker via reusePort |
cors | CorsConfig | — | Politique CORS |
middleware | object | — | Hooks beforeRequest, afterRequest, onError |
hooks | object | — | Hooks onNotFound, onShutdown |
Mode cluster
Section intitulée « Mode cluster »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.
Déploiement en production
Section intitulée « Déploiement en production »-
Build :
Fenêtre de terminal bun run build -
Démarrage :
Fenêtre de terminal bun dist/server.js