Crvi/assets/js/vite.config.js
2026-01-20 07:54:37 +01:00

90 lines
3.5 KiB
JavaScript

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'
}
});