import { defineConfig } from 'vite'; export default defineConfig({ build: { outDir: 'dist', rollupOptions: { input: { crvi_libraries: 'crvi_libraries.js', crvi_main: 'crvi_main.js', crvi_main_css: '../css/crvi_main.css', intervenant_profile_css: '../css/intervenant-profile.css', traduction_langue_admin: 'traduction-langue-admin.js', traduction_langue_admin_css: '../css/traduction-langue-admin.css', traduction_langue_list: 'traduction-langue-list.js', traduction_langue_list_css: '../css/traduction-langue-list.css' }, output: { format: 'es', // Format ES modules entryFileNames: '[name].min.js', assetFileNames: (assetInfo) => { // Renommer le CSS extrait automatiquement de crvi_libraries.js if (assetInfo.name && (assetInfo.name.includes('crvi_libraries') && assetInfo.name.endsWith('.css'))) { return 'crvi_libraries.min.css'; } // Renommer le CSS des libraries (si entrée séparée) if (assetInfo.name && assetInfo.name.includes('crvi_libraries_css')) { return 'crvi_libraries.min.css'; } // Renommer le fichier CSS principal en crvi_main.min.css if (assetInfo.name && assetInfo.name.includes('crvi_main_css')) { return 'crvi_main.min.css'; } // Renommer le CSS du profil intervenant if (assetInfo.name && assetInfo.name.includes('intervenant_profile_css')) { return 'intervenant-profile.min.css'; } // Renommer le CSS de traduction-langue admin if (assetInfo.name && assetInfo.name.includes('traduction_langue_admin_css')) { return 'traduction-langue-admin.min.css'; } // Renommer le CSS de traduction-langue list if (assetInfo.name && assetInfo.name.includes('traduction_langue_list_css')) { return 'traduction-langue-list.min.css'; } // Pour les autres assets CSS, utiliser le pattern par défaut if (assetInfo.name && assetInfo.name.endsWith('.css')) { return '[name].min.css'; } return '[name].min.[ext]'; }, // Séparer les librairies externes des modules locaux manualChunks: (id) => { // Si c'est le fichier crvi_libraries.js, tout va dans crvi_libraries if (id.includes('crvi_libraries.js')) { return 'crvi_libraries'; } // Détecter les node_modules (librairies externes) if (id.includes('node_modules')) { // Séparer Bootstrap, Toastr, FullCalendar et leurs dépendances dans le chunk libraries if (id.includes('bootstrap') || id.includes('toastr') || id.includes('select2') || id.includes('@fullcalendar') || id.includes('@popperjs') || id.includes('jquery')) { return 'crvi_libraries'; } // Autres node_modules - inclure dans libraries aussi return 'crvi_libraries'; } // Les modules locaux restent dans crvi_main return null; }, chunkFileNames: '[name].min.js', globals: { 'jquery': 'jQuery', 'toastr': 'toastr', 'select2': 'select2' } } }, // Forcer la transpilation pour compatibilité navigateur target: 'es2015', minify: true // Utilise esbuild par défaut (plus rapide que terser) }, define: { global: 'window' } });