Files
sucupira 3e60f48c5e feat: support du déploiement sous sous-chemin (paths.base)
- Liens et assets via {base}, polices déplacées vers src/lib/assets (hachage Vite)
- Service worker base-aware, précache sur les pages prérendues
- CSP hash documentée : l'hôte ne doit pas fixer script-src
- Docs : déploiement Apache/YunoHost (DEPLOYMENT, APACHE_AUTOINDEX)
2026-07-21 13:41:10 -04:00

40 lines
1.4 KiB
JavaScript

import adapter from '@sveltejs/adapter-static'
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'
/** @type {import('@sveltejs/kit').Config} */
const config = {
preprocess: vitePreprocess(),
kit: {
// Site 100 % prérendu : servi par nginx sur l'infra OKI, mirrorable
// (ADR-001 ; doctrine §4.4 — HTML rendu serveur, un lien marche sans JS).
adapter: adapter({
fallback: '404.html'
}),
// Déployé à la racine de https://chatcontrol.o-k-i.net/ (YunoHost) :
// pas de paths.base. Pour servir sous un sous-chemin, ajouter ici
// paths: { base: '/prefixe' } et adapter les règles du serveur.
// Le script de démarrage SvelteKit est inline (il embarque les données de
// la page) : une CSP `script-src 'self'` posée en en-tête HTTP le bloque
// et tue l'hydratation (recherche et filtres morts — vécu sur o2switch).
// En mode hash, chaque page prérendue porte une <meta> CSP avec l'empreinte
// de SON script inline. L'en-tête serveur ne doit donc plus fixer
// script-src (voir DEPLOYMENT.md §2/§3).
csp: {
mode: 'hash',
directives: {
'script-src': ['self']
}
},
// Un seul bundle JS + une seule feuille CSS au lieu de ~30 chunks :
// moins de requêtes par page (3G, anti-flood o2switch qui répond 429).
output: {
bundleStrategy: 'single'
},
prerender: {
handleHttpError: 'fail'
}
}
}
export default config