Files
ludikevent_crm/vite.config.js
Serreau Jovann 42e33a5908 feat(etl): Add ETL authentication and navigation
Add Keycloak authentication for ETL users.
Configure ETL routes and login/logout functionality.
Integrate ETL with Keycloak SSO.
Update vite.config.js to include etl.js.
Create EtlController with home, login, and logout routes.
Implement EtlAuthenticator for email/password login.
Configure security.yaml for ETL firewall and providers.
Add etl.js and etl.scss for ETL frontend.
Add Keycloak client configuration for ETL.
Update PrestaireController to use absolute URL for login.
2026-02-06 11:43:31 +01:00

101 lines
3.3 KiB
JavaScript

// vite.config.js
import { defineConfig } from 'vite';
import { resolve } from 'path';
import JavaScriptObfuscator from 'rollup-plugin-javascript-obfuscator';
import tailwindcss from '@tailwindcss/vite'
import viteCompression from 'vite-plugin-compression';
export default defineConfig({
root: './assets',
base: '/assets/',
server: {
host: "0.0.0.0",
allowedHosts: ["esyweb.local"],
port: 5173,
open: false,
cors: {
origin: ['https://esyweb.local']
},
},
resolve: {
alias: {
'@': resolve(__dirname, 'assets'),
},
// Extensions de fichiers à résoudre automatiquement
extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue', '.scss', '.css'],
},
build: {
outDir: resolve(__dirname, 'public/build'),
assetsDir: '',
emptyOutDir: true,
manifest: true,
sourcemap: false,
// Minification par défaut : esbuild est déjà très rapide et efficace
minify: 'esbuild',
cssMinify: 'esbuild',
// NOUVEAU : Stratégie de découpage du code pour améliorer le cache client
rollupOptions: {
input: {
app: resolve(__dirname, 'assets/app.js'),
admin: resolve(__dirname, 'assets/admin.js'),
error: resolve(__dirname, 'assets/error.js'),
reserve: resolve(__dirname, 'assets/reserve.js'),
flow_reservation: resolve(__dirname, 'assets/flow_reservation.js'),
etl: resolve(__dirname, 'assets/etl.js'),
}
},
},
// --- Plugins Vite ---
plugins: [
tailwindcss(),
// NOUVEAU: Ajoutez Preact/React/Vue si vous utilisez ces frameworks
// preact(),
// 1. Compression des Assets (Gzip et Brotli)
// Crée des fichiers .gz et .br à côté des assets originaux.
// Votre serveur web (Nginx/Apache) doit être configuré pour servir ces versions compressées.
viteCompression({
verbose: true,
disable: false,
threshold: 10240, // Compresse seulement les fichiers > 10KB
algorithm: 'gzip',
ext: '.gz',
}),
viteCompression({
verbose: true,
disable: false,
threshold: 10240,
algorithm: 'brotliCompress', // Brotli est plus efficace que Gzip
ext: '.br',
// Ne génère le brotli que si l'algorithme est disponible (par défaut)
deleteOriginFile: false // Important : gardez les fichiers originaux
}),
JavaScriptObfuscator({
// Options recommandées pour un bon équilibre entre sécurité et performance
compact: true,
sourceMap: false,
controlFlowFlattening: true, // Très efficace mais coûteux en performance à l'exécution
deadCodeInjection: false,
debugProtection: false,
identifierNamesGenerator: 'hexadecimal', // Rend le code illisible
log: false,
numbersToExpressions: true,
simplify: true,
splitStrings: true,
stringArray: true,
stringArrayThreshold: 0.75,
transformObjectKeys: true,
unicodeEscapeSequence: false,
}),
],
define: {},
});