diff --git a/vite.config.js b/vite.config.js index d2228aa..578c665 100644 --- a/vite.config.js +++ b/vite.config.js @@ -2,14 +2,39 @@ import { defineConfig } from 'vite' import { svelte } from '@sveltejs/vite-plugin-svelte' import path from 'path' -export default defineConfig(({ command }) => ({ - // En build, les assets (fonts…) sont copiés dans assets/dist/ et les URLs doivent y pointer. - // En dev, le proxy sert les fichiers depuis leur chemin d'origine. - base: command === 'build' ? '/assets/dist/' : '/', +/** + * Plugin: les fonts restent dans assets/fonts/, sans duplication dans dist/. + * Vite les copie dans dist/ pendant le build — ce plugin les supprime du bundle + * et réécrit leurs URLs dans le CSS pour pointer vers /assets/fonts/. + */ +function keepFontsInPlace() { + const fontRe = /\.(woff2?|ttf|otf)$/i + return { + name: 'keep-fonts-in-place', + generateBundle(_, bundle) { + for (const [key, chunk] of Object.entries(bundle)) { + if (fontRe.test(key)) { + delete bundle[key] + } + } + for (const chunk of Object.values(bundle)) { + if (chunk.type === 'asset' && chunk.fileName.endsWith('.css')) { + chunk.source = chunk.source.replace( + /url\((['"]?)([^'")\s]*\.(woff2?|ttf|otf))\1\)/gi, + (_, _q, p) => `url("/assets/fonts/${p.split('/').pop()}")` + ) + } + } + } + } +} + +export default defineConfig({ plugins: [ svelte({ configFile: './svelte.config.js' - }) + }), + keepFontsInPlace(), ], resolve: { alias: { @@ -43,4 +68,4 @@ export default defineConfig(({ command }) => ({ } } } -})) +})