Fix: fonts non dupliquées dans dist/, URLs CSS pointent vers assets/fonts/
All checks were successful
Deploy / Deploy to Production (push) Successful in 17s
All checks were successful
Deploy / Deploy to Production (push) Successful in 17s
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 <noreply@anthropic.com>
This commit is contained in:
parent
fca67beb6b
commit
09d05f53da
1 changed files with 31 additions and 6 deletions
|
|
@ -2,14 +2,39 @@ import { defineConfig } from 'vite'
|
||||||
import { svelte } from '@sveltejs/vite-plugin-svelte'
|
import { svelte } from '@sveltejs/vite-plugin-svelte'
|
||||||
import path from 'path'
|
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.
|
* Plugin: les fonts restent dans assets/fonts/, sans duplication dans dist/.
|
||||||
// En dev, le proxy sert les fichiers depuis leur chemin d'origine.
|
* Vite les copie dans dist/ pendant le build — ce plugin les supprime du bundle
|
||||||
base: command === 'build' ? '/assets/dist/' : '/',
|
* 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: [
|
plugins: [
|
||||||
svelte({
|
svelte({
|
||||||
configFile: './svelte.config.js'
|
configFile: './svelte.config.js'
|
||||||
})
|
}),
|
||||||
|
keepFontsInPlace(),
|
||||||
],
|
],
|
||||||
resolve: {
|
resolve: {
|
||||||
alias: {
|
alias: {
|
||||||
|
|
@ -43,4 +68,4 @@ export default defineConfig(({ command }) => ({
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}))
|
})
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue