61 lines
1.8 KiB
TypeScript
61 lines
1.8 KiB
TypeScript
import { defineConfig } from 'vitest/config';
|
|||
|
|
import adapter from '@sveltejs/adapter-node';
|
||
|
|
import { sveltekit } from '@sveltejs/kit/vite';
|
||
|
|
|
||
|
|
// Sous-chemin de montage (YunoHost sert l'app sous https://domaine.tld/<path>).
|
||
|
|
// Injecté au build par le script d'install YNH (BASE_PATH=/veille-ia npm run build).
|
||
|
|
// Vide en dev local. Doit commencer par '/' et ne pas finir par '/'.
|
||
|
|
const envBasePath = process.env.BASE_PATH ?? '';
|
||
|
|
if (envBasePath !== '' && (!envBasePath.startsWith('/') || envBasePath.endsWith('/'))) {
|
||
|
|
throw new Error(`BASE_PATH invalide : "${envBasePath}" (doit commencer par '/' sans '/' final)`);
|
||
|
|
}
|
||
|
|
const basePath = envBasePath as '' | `/${string}`;
|
||
|
|
|
||
|
|
export default defineConfig({
|
||
|
|
plugins: [
|
||
|
|
sveltekit({
|
||
|
|
compilerOptions: {
|
||
|
|
// Force runes mode for the project, except for libraries. Can be removed in svelte 6.
|
||
|
|
runes: ({ filename }) =>
|
||
|
|
filename.split(/[/\\]/).includes('node_modules') ? undefined : true
|
||
|
|
},
|
||
|
|
adapter: adapter(),
|
||
|
|
paths: {
|
||
|
|
base: basePath,
|
||
|
|
// Obligatoire dès que paths.base est utilisé (évite les URLs relatives cassées).
|
||
|
|
relative: false
|
||
|
|
},
|
||
|
|
csp: {
|
||
|
|
mode: 'nonce',
|
||
|
|
directives: {
|
||
|
|
'default-src': ['self'],
|
||
|
|
'script-src': ['self'],
|
||
|
|
// Les transitions Svelte créent des <style> inline : unsafe-inline requis.
|
||
|
|
'style-src': ['self', 'unsafe-inline'],
|
||
|
|
'img-src': ['self', 'data:'],
|
||
|
|
'font-src': ['self'],
|
||
|
|
'connect-src': ['self'],
|
||
|
|
'frame-ancestors': ['none'],
|
||
|
|
'base-uri': ['self'],
|
||
|
|
'form-action': ['self'],
|
||
|
|
'object-src': ['none']
|
||
|
|
}
|
||
|
|
}
|
||
|
|
})
|
||
|
|
],
|
||
|
|
test: {
|
||
|
|
expect: { requireAssertions: true },
|
||
|
|
projects: [
|
||
|
|
{
|
||
|
|
extends: './vite.config.ts',
|
||
|
|
test: {
|
||
|
|
name: 'server',
|
||
|
|
environment: 'node',
|
||
|
|
include: ['src/**/*.{test,spec}.{js,ts}'],
|
||
|
|
exclude: ['src/**/*.svelte.{test,spec}.{js,ts}']
|
||
|
|
}
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
});
|