fix: background-image via style inline pour éviter la réécriture Vite
All checks were successful
Deploy / Deploy to Production (push) Successful in 21s

Vite traite les url() dans les blocs <style> et réécrit le chemin au build.
Déplacement de l'url en attribut style inline (non traité par Vite).
Annule la tentative de correction via generateBundle.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
isUnknown 2026-03-25 13:44:03 +01:00
parent 411b281317
commit e74e7d249d
2 changed files with 1 additions and 14 deletions

View file

@ -125,7 +125,7 @@
<Cursor /> <Cursor />
<Header /> <Header />
<div class="bg-fixed"></div> <div class="bg-fixed" style="background-image: url('/assets/img/scrollable-page-background.png')"></div>
<main class="main"> <main class="main">
<div <div
@ -200,7 +200,6 @@
position: fixed; position: fixed;
inset: 0; inset: 0;
z-index: -1; z-index: -1;
background-image: url('/assets/img/scrollable-page-background.png');
background-size: cover; background-size: cover;
background-position: center; background-position: center;
background-repeat: no-repeat; background-repeat: no-repeat;

View file

@ -6,9 +6,6 @@ import path from 'path'
* Plugin: les fonts restent dans assets/fonts/, sans duplication dans 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 * 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/. * 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() { function keepFontsInPlace() {
const fontRe = /\.(woff2?|ttf|otf)$/i const fontRe = /\.(woff2?|ttf|otf)$/i
@ -22,19 +19,10 @@ function keepFontsInPlace() {
} }
for (const chunk of Object.values(bundle)) { for (const chunk of Object.values(bundle)) {
if (chunk.type === 'asset' && chunk.fileName.endsWith('.css')) { if (chunk.type === 'asset' && chunk.fileName.endsWith('.css')) {
// Réécrit les URLs des fonts
chunk.source = chunk.source.replace( chunk.source = chunk.source.replace(
/url\((['"]?)([^'")\s]*\.(woff2?|ttf|otf))\1\)/gi, /url\((['"]?)([^'")\s]*\.(woff2?|ttf|otf))\1\)/gi,
(_, _q, p) => `url("/assets/fonts/${decodeURIComponent(p.split('/').pop())}")` (_, _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}")`
}
)
} }
} }
} }