From 09d05f53da24117971d5e2da305a0ee20ed874b6 Mon Sep 17 00:00:00 2001 From: isUnknown Date: Thu, 5 Mar 2026 17:45:18 +0100 Subject: [PATCH] =?UTF-8?q?Fix:=20fonts=20non=20dupliqu=C3=A9es=20dans=20d?= =?UTF-8?q?ist/,=20URLs=20CSS=20pointent=20vers=20assets/fonts/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plugin Vite keepFontsInPlace : supprime les fonts que Vite copie dans dist/ et réécrit leurs URLs dans le CSS pour pointer vers /assets/fonts/. Reverts base: '/assets/dist/' — inutile avec cette approche. Co-Authored-By: Claude Sonnet 4.6 --- vite.config.js | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) 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 }) => ({ } } } -})) +})