diff --git a/vite.config.js b/vite.config.js index 87b6cc7..578c665 100644 --- a/vite.config.js +++ b/vite.config.js @@ -2,11 +2,39 @@ import { defineConfig } from 'vite' import { svelte } from '@sveltejs/vite-plugin-svelte' import path from 'path' +/** + * 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: {