Configuration
⚙️ Configuration avancée
Section titled “⚙️ Configuration avancée”Veko.js propose une configuration flexible pour s’adapter à tous les besoins.
Tu peux personnaliser chaque aspect du framework via l’objet passé au constructeur App ou via le fichier config/app.js.
Exemple de configuration complète
Section titled “Exemple de configuration complète”const { App } = require('veko');
const app = new App({ port: 3000, // Port d'écoute HTTP wsPort: 3008, // Port WebSocket (dev) viewsDir: 'views', // Dossier des vues EJS staticDir: 'public', // Dossier des fichiers statiques routesDir: 'routes', // Dossier des routes isDev: false, // Mode développement watchDirs: ['views', 'routes', 'public'], // Dossiers à surveiller (dev) errorLog: 'error.log', // Fichier de logs d'erreur showStack: true, // Afficher la stack trace autoInstall: true, // Installation auto des modules manquants layouts: { // Configuration des layouts EJS enabled: true, defaultLayout: 'main', layoutsDir: 'views/layouts', extension: '.ejs', cache: true }, plugins: { // Système de plugins enabled: true, autoLoad: true, pluginsDir: 'plugins' }, prefetch: { // Préchargement intelligent enabled: true, maxConcurrent: 3, notifyUser: true, cacheRoutes: true, prefetchDelay: 1000 }, autoUpdater: { // Auto-updater révolutionnaire enabled: true, checkOnStart: true, autoUpdate: false, updateChannel: 'stable', // stable | beta | alpha securityUpdates: true, backupCount: 5, checkInterval: 3600000, rollbackOnFailure: true }});
app.loadRoutes().listen();Principales options
Section titled “Principales options”- port : Port HTTP du serveur (par défaut : 3000)
- wsPort : Port WebSocket pour le hot reload (dev)
- viewsDir : Dossier des vues EJS
- staticDir : Dossier des fichiers statiques
- routesDir : Dossier des routes
- isDev : Active le mode développement (hot reload, logs détaillés…)
- watchDirs : Dossiers surveillés pour le rechargement intelligent
- errorLog : Fichier de logs d’erreur
- showStack : Affiche la stack trace en cas d’erreur
- autoInstall : Installe automatiquement les dépendances manquantes
Layouts
Section titled “Layouts”layouts: { enabled: true, // Active le système de layouts layoutsDir: 'views/layouts',// Dossier des layouts defaultLayout: 'main', // Nom du layout par défaut extension: '.ejs', // Extension des fichiers sections: ['head', 'header', 'content', 'footer', 'scripts'], cache: true // Active le cache en production}Plugins
Section titled “Plugins”plugins: { enabled: true, // Active le système de plugins autoLoad: true, // Chargement automatique des plugins pluginsDir: 'plugins' // Dossier des plugins}Auto-Updater
Section titled “Auto-Updater”autoUpdater: { enabled: true, // Active l’auto-updater checkOnStart: true, // Vérifie au démarrage autoUpdate: false, // Mode manuel (recommandé) updateChannel: 'stable', // stable | beta | alpha securityUpdates: true, // Mises à jour de sécurité auto backupCount: 5, // Nombre de backups à conserver checkInterval: 3600000, // Vérification périodique (ms) rollbackOnFailure: true // Restauration auto en cas d’échec}Configuration via fichier
Section titled “Configuration via fichier”Tu peux aussi créer un fichier config/app.js pour centraliser la configuration :
module.exports = { port: 3000, isDev: process.env.NODE_ENV !== 'production', // ...autres options};Puis dans ton app.js :
const config = require('./config/app');const { App } = require('veko');const app = new App(config);app.loadRoutes().listen();🔄 Modifier la configuration à chaud
Section titled “🔄 Modifier la configuration à chaud”Certaines options (plugins, auto-updater, logs…) peuvent être modifiées à chaud via la CLI ou l’API REST :
veko update config autoUpdate trueveko update config updateChannel beta🛠️ Bonnes pratiques
Section titled “🛠️ Bonnes pratiques”- Utilise le mode développement (
isDev: true) pour profiter du hot reload et des logs détaillés. - Active le cache des layouts uniquement en production.
- Place tes plugins dans le dossier
plugins/pour un chargement automatique. - Utilise le fichier
config/app.jspour séparer la config du code.