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>
71 lines
1.9 KiB
JavaScript
71 lines
1.9 KiB
JavaScript
import { defineConfig } from 'vite'
|
|
import { svelte } from '@sveltejs/vite-plugin-svelte'
|
|
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/.
|
|
*/
|
|
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: {
|
|
'@components': path.resolve(__dirname, 'src/components'),
|
|
'@views': path.resolve(__dirname, 'src/views'),
|
|
'@state': path.resolve(__dirname, 'src/state'),
|
|
'@router': path.resolve(__dirname, 'src/router'),
|
|
'@utils': path.resolve(__dirname, 'src/utils'),
|
|
'@composables': path.resolve(__dirname, 'src/composables')
|
|
}
|
|
},
|
|
server: {
|
|
port: 5173,
|
|
proxy: {
|
|
'^(?!/@vite|/@fs|/node_modules|/src).*': {
|
|
target: 'http://localhost:8000',
|
|
changeOrigin: true
|
|
}
|
|
}
|
|
},
|
|
build: {
|
|
outDir: 'assets/dist',
|
|
emptyOutDir: true,
|
|
manifest: false,
|
|
rollupOptions: {
|
|
input: 'src/main.js',
|
|
output: {
|
|
entryFileNames: 'index.js',
|
|
chunkFileNames: '[name].js',
|
|
assetFileNames: '[name].[ext]'
|
|
}
|
|
}
|
|
}
|
|
})
|