Aller au contenu

Configuration

L’objet ServerConfig est passé comme second argument à createServer (pour Node/Bun) ou dans ServerlessConfig (pour Vercel/Netlify).

OptionTypeDéfautDescription
portnumber3000Port d’écoute
platform'node' | 'bun' | 'vercel' | 'netlify''node'Plateforme cible
isDevbooleanNODE_ENV === 'development'Active le mode dev (erreurs détaillées, monitoring)
timeoutnumber30000Timeout de requête en millisecondes
defaultHeadersRecord<string, string>Headers ajoutés à chaque réponse

Configuration TLS pour HTTPS (Node.js uniquement).

httpsOptions: {
cert: readFileSync('./certs/cert.pem'),
key: readFileSync('./certs/key.pem'),
}

Voir la page CORS pour toutes les options.

cors: {
origin: 'https://monapp.com',
credentials: true,
maxAge: 86400,
}

Middleware global appliqué à chaque requête.

middleware: {
beforeRequest: async (req, res) => { /* ... */ },
afterRequest: async (req, res) => { /* ... */ },
onError: async (req, res, ctx) => { /* ... */ },
}

Chaque propriété accepte un handler unique ou un tableau de handlers.

Hooks de cycle de vie du serveur.

hooks: {
onNotFound: async (req, res) => {
res.status(404).json({ error: 'Non trouvé' })
},
onShutdown: async () => {
await db.end()
},
}
HookQuand il s’exécute
onNotFoundAucune route ne correspond à la requête
onShutdownRéception de SIGINT, SIGTERM ou SIGHUP

Clustering multi-processus (Node.js et Bun).

cluster: {
enabled: false, // défaut
workers: undefined, // défaut : os.cpus().length
}

Monitoring de performances en développement (Node.js uniquement, nécessite isDev: true).

monitoring: {
enabled: false, // défaut
sampleInterval: 5000, // ms entre les échantillons
reportInterval: 60000, // ms entre les rapports console
thresholds: {
cpu: 80, // % — déclenche une alerte
memory: 512, // Mo
responseTime: 500, // ms
errorRate: 5, // %
},
}

Quand activé, un endpoint /health retourne les métriques en temps réel en JSON.

Manifest de routes pré-compilé (plateformes serverless uniquement). Généré par lacis build.

import { routes, middlewares } from './routes/_manifest.js'
// Passé à vercelAdapter ou netlifyAdapter
vercelAdapter.createHandler({ routes, middlewares })

Génération de la spec OpenAPI.

openapi: {
path: '/openapi.json',
info: {
title: 'Mon API',
version: '1.0.0',
description: 'Description optionnelle.',
},
}