2026-07-10 12:51:17 -04:00
|
|
|
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'
|
|
|
|
|
}),
|
2026-07-21 13:41:10 -04:00
|
|
|
// 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'
|
|
|
|
|
},
|
2026-07-10 12:51:17 -04:00
|
|
|
prerender: {
|
|
|
|
|
handleHttpError: 'fail'
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default config
|