90 lines
3.5 KiB
JavaScript
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'
|
|
}
|
|
});
|