From 411b28131782e6f81462f9815cd3e80db49e3ee7 Mon Sep 17 00:00:00 2001 From: isUnknown Date: Wed, 25 Mar 2026 13:41:16 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20pr=C3=A9server=20les=20URLs=20/assets/im?= =?UTF-8?q?g/=20dans=20le=20CSS=20au=20build?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Vite réécrit les url() du CSS en supprimant le chemin (assetFileNames: '[name].[ext]'). Extension du plugin keepFontsInPlace pour corriger les URLs /assets/img/ dans le bundle CSS final. Co-Authored-By: Claude Sonnet 4.6 --- vite.config.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/vite.config.js b/vite.config.js index 5051298..6367c39 100644 --- a/vite.config.js +++ b/vite.config.js @@ -6,6 +6,9 @@ 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/. + * + * Également : les URLs /assets/img/ dans le CSS sont préservées telles quelles + * (Vite les réécrit en supprimant le chemin à cause de assetFileNames: '[name].[ext]'). */ function keepFontsInPlace() { const fontRe = /\.(woff2?|ttf|otf)$/i @@ -19,10 +22,19 @@ function keepFontsInPlace() { } for (const chunk of Object.values(bundle)) { if (chunk.type === 'asset' && chunk.fileName.endsWith('.css')) { + // Réécrit les URLs des fonts chunk.source = chunk.source.replace( /url\((['"]?)([^'")\s]*\.(woff2?|ttf|otf))\1\)/gi, (_, _q, p) => `url("/assets/fonts/${decodeURIComponent(p.split('/').pop())}")` ) + // Réécrit les URLs des images /assets/img/ (Vite supprime le chemin) + chunk.source = chunk.source.replace( + /url\((['"]?)([^'")\s]*assets\/img\/[^'")\s]*\.(png|jpe?g|gif|webp|avif|svg))\1\)/gi, + (_, _q, p) => { + const filename = decodeURIComponent(p.split('/').pop()) + return `url("/assets/img/${filename}")` + } + ) } } }