import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react-swc'; import viteCompression from 'vite-plugin-compression'; import { visualizer } from 'rollup-plugin-visualizer'; import path from 'path'; export default defineConfig({ plugins: [ // ✅ Plugin React react(), // ✅ Compression Brotli & Gzip fusionnées viteCompression({ algorithm: 'brotliCompress', // Utilisation de Brotli en priorité ext: '.br', threshold: 10240, // Compression à partir de 10 Ko }), viteCompression({ algorithm: 'gzip', // Compression Gzip en fallback ext: '.gz', threshold: 10240, }), // ✅ Visualisation des bundles (ouvre `stats.html` après le build) visualizer({ open: false, // Mets `true` si tu veux ouvrir le fichier automatiquement filename: 'stats.html', template: 'treemap', }), ], resolve: { alias: { '@pages': path.resolve(__dirname, './src/pages'), '@components': path.resolve(__dirname, './src/components'), '@assets': path.resolve(__dirname, './src/assets'), }, }, build: { chunkSizeWarningLimit: 1000, target: 'esnext', // ✅ Meilleure compatibilité avec les navigateurs modernes minify: 'esbuild', // ✅ Utilisation d'Esbuild pour un build rapide sourcemap: true, // ✅ Active les source maps en production (utile pour le debug) rollupOptions: { output: { manualChunks(id) { if (id.includes('node_modules')) { if (id.includes('@mui')) { return 'vendor_mui'; // ✅ Sépare MUI du reste des dépendances } return 'vendor'; // ✅ Sépare les dépendances globales } }, }, }, }, server: { port: 3000, // ✅ Serveur sur le port 3000 open: true, // ✅ Ouvre le navigateur au démarrage cors: true, // ✅ Active les requêtes CORS }, optimizeDeps: { include: [ 'swiper/react', 'swiper/modules', ], }, });