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.
101 lines
3.3 KiB
JavaScript
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: {},
|
|
});
|