forked from expressjs/express
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathveko.config.example.js
More file actions
146 lines (129 loc) · 6.16 KB
/
veko.config.example.js
File metadata and controls
146 lines (129 loc) · 6.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
/**
* Veko.js Configuration Example
*
* Ce fichier montre toutes les options de configuration disponibles.
* Copiez-le dans votre projet et adaptez-le à vos besoins.
*
* Types de pages:
* ○ Static - Prérendu comme contenu statique
* ● SSG - Prérendu avec getStaticProps
* ƒ Dynamic - Rendu serveur à la demande
* ⚡ Ultra - Build à la demande avec bundling sélectif
*/
const { defineConfig } = require('veko');
module.exports = defineConfig({
// ─────────────────────────────────────────────
// Informations du projet
// ─────────────────────────────────────────────
name: 'veko-app',
version: '1.0.0',
// ─────────────────────────────────────────────
// Configuration serveur
// ─────────────────────────────────────────────
port: 3000,
host: 'localhost',
// ─────────────────────────────────────────────
// Structure des répertoires
// ─────────────────────────────────────────────
dirs: {
pages: 'pages', // Pages avec routing automatique
components: 'components', // Composants réutilisables
public: 'public', // Assets statiques
themes: 'themes', // Thèmes visuels
modules: 'modules', // Modules fonctionnels
plugins: 'plugins', // Plugins
widgets: 'widgets', // Widgets
api: 'api', // Routes API
output: '.veko' // Cache et fichiers générés
},
// ─────────────────────────────────────────────
// Configuration du build
// ─────────────────────────────────────────────
build: {
outDir: 'dist', // Répertoire de sortie
staticDir: 'dist/static', // Pages statiques
minify: true, // Minifier HTML/CSS/JS
sourceMaps: false, // Générer source maps
analyze: false // Analyser le bundle
},
// ─────────────────────────────────────────────
// Configuration des pages par défaut
// ─────────────────────────────────────────────
pages: {
defaultType: 'static', // Type par défaut: static | ssg | dynamic
extensions: ['.jsv', '.tsv', '.jsx', '.tsx']
},
// ─────────────────────────────────────────────
// Pages Ultra-dynamiques
// Pour CMS avec thèmes et modules configurables
// ─────────────────────────────────────────────
ultra: {
enabled: false, // Activer le mode ultra
// Répertoires entièrement ultra-dynamiques
dirs: [
// 'pages/admin',
// 'pages/cms'
],
// Fichiers spécifiques ultra-dynamiques
files: [
// 'pages/customize.jsv'
],
// Patterns glob pour ultra-dynamique
patterns: [
// 'pages/**/*.ultra.jsv',
// 'pages/dashboard/**/*'
],
cacheTime: 60000, // Cache TTL en ms (1 minute)
lazyComponents: true // Charger composants à la demande
},
// ─────────────────────────────────────────────
// Système de modules et thèmes
// ─────────────────────────────────────────────
moduleSystem: {
enabled: true, // Activer le système de modules
// Modules à charger automatiquement au démarrage
autoLoad: [
// 'core',
// 'seo',
// 'analytics'
],
// Thème par défaut (null = pas de thème)
defaultTheme: null
},
// ─────────────────────────────────────────────
// Configuration VSV (Veko Server Views)
// ─────────────────────────────────────────────
vsv: {
ssr: true, // Server-Side Rendering
hydrate: true, // Hydratation côté client
precompile: true, // Précompiler les composants
tailwind: false // Activer Tailwind CSS intégré
},
// ─────────────────────────────────────────────
// Sécurité
// ─────────────────────────────────────────────
security: {
rateLimit: {
enabled: true,
windowMs: 15 * 60 * 1000, // 15 minutes
max: 100 // 100 requêtes par fenêtre
},
cors: {
enabled: false,
origins: ['*']
},
headers: {
xFrameOptions: 'DENY',
xContentTypeOptions: 'nosniff',
xXssProtection: '1; mode=block'
}
},
// ─────────────────────────────────────────────
// Développement
// ─────────────────────────────────────────────
dev: {
hotReload: true, // Hot reload activé
verbose: false, // Logs détaillés
openBrowser: false // Ouvrir navigateur au démarrage
}
});