Node.js
Point d’entrée
Section intitulée « Point d’entrée »// server.tsimport { nodeAdapter } from 'lacis/adapters'
const createServer = nodeAdapter.createHandler('./routes')
createServer({ port: 3000, isDev: process.env.NODE_ENV !== 'production',})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 |
httpsOptions | object | — | Configuration TLS |
cluster | object | — | Clustering multi-processus |
monitoring | object | { enabled: false } | Monitoring de performances en dev |
cors | CorsConfig | — | Politique CORS |
middleware | object | — | Hooks beforeRequest, afterRequest, onError |
hooks | object | — | Hooks onNotFound, onShutdown |
Déploiement en production
Section intitulée « Déploiement en production »-
Compilez votre TypeScript :
Fenêtre de terminal npm run build -
Démarrez le serveur :
Fenêtre de terminal node dist/server.js -
Utilisez un gestionnaire de processus pour la résilience :
Fenêtre de terminal pm2 start dist/server.js --name my-api
import { readFileSync } from 'fs'import { nodeAdapter } from 'lacis/adapters'
const createServer = nodeAdapter.createHandler('./routes')
createServer({ port: 443, httpsOptions: { cert: readFileSync('./certs/cert.pem'), key: readFileSync('./certs/key.pem'), },})Mode cluster
Section intitulée « Mode cluster »Utilise le module cluster natif de Node. Le processus principal gère les workers et relance ceux qui plantent.
createServer({ port: 3000, cluster: { enabled: true, workers: 4, // défaut : os.cpus().length },})Monitoring en développement
Section intitulée « Monitoring en développement »Quand isDev: true et monitoring.enabled: true, un endpoint /health retourne des métriques de performance en temps réel :
createServer({ isDev: true, monitoring: { enabled: true, sampleInterval: 5000, reportInterval: 60000, thresholds: { cpu: 80, memory: 512, responseTime: 500, errorRate: 5 }, },})