import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import { fileURLToPath, URL } from 'node:url' // https://vitejs.dev/config/ export default defineConfig({ plugins: [vue()], // Chemins relatifs dans les assets buildés (main.css -> fonts/...) : sinon // Vite génère des url() absolues depuis la racine du site ("/fonts/...") // au lieu du dossier du thème, où Drupal sert réellement assets/dist/. base: './', server: { // The dev server must be reachable from the browser on the host. host: 'localhost', port: 5173, strictPort: true, // Since Vite 5.4.12 (CVE-2025-24010) CORS is disabled by default. // Explicitly allow the origin(s) that serve the Drupal pages (vhost). cors: { origin: [/^https?:\/\/dev\.leshed\.fr(:\d+)?$/], }, // Absolute base URL used by Vite to build asset/HMR URLs. origin: 'http://localhost:5173', hmr: { host: 'localhost', }, watch: { usePolling: true, }, }, build: { outDir: 'assets/dist', rollupOptions: { input: 'assets/js/main.js', output: { entryFileNames: 'main.js', // Sans distinction d'extension, tous les assets émis (CSS mais aussi // les polices référencées en url() dans fonts.scss) écrasaient le // même fichier main.css au hasard de l'ordre de build. assetFileNames: (assetInfo) => assetInfo.name.endsWith('.css') ? 'main.css' : 'fonts/[name][extname]', } } }, resolve: { alias: { '@api': fileURLToPath(new URL('api', import.meta.url)), // '@': fileURLToPath(new URL('./src', import.meta.url)), // '@stores': fileURLToPath(new URL('./src/stores', import.meta.url)), // '@components': fileURLToPath(new URL('./src/components', import.meta.url)), // '@views': fileURLToPath(new URL('./src/views', import.meta.url)), // // '@icons': fileURLToPath(new URL('./node_modules/vue-material-design-icons', import.meta.url)), // '@node_modules': fileURLToPath(new URL('./node_modules', import.meta.url)) } } })