fix: préserver les URLs /assets/img/ dans le CSS au build
All checks were successful
Deploy / Deploy to Production (push) Successful in 21s
All checks were successful
Deploy / Deploy to Production (push) Successful in 21s
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 <noreply@anthropic.com>
This commit is contained in:
parent
e41a730b4d
commit
411b281317
1 changed files with 12 additions and 0 deletions
|
|
@ -6,6 +6,9 @@ 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
|
||||||
|
|
@ -19,10 +22,19 @@ 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}")`
|
||||||
|
}
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue