83 lines
2.2 KiB
TypeScript
83 lines
2.2 KiB
TypeScript
import { sveltekit } from '@sveltejs/kit/vite';
|
|
import tailwindcss from '@tailwindcss/vite';
|
|
import { playwright } from '@vitest/browser-playwright';
|
|
import { defineConfig } from 'vitest/config';
|
|
|
|
import type { IncomingMessage, ServerResponse } from 'http';
|
|
import type { Plugin, PreviewServer, ViteDevServer } from 'vite';
|
|
|
|
const addHeaders = (res: ServerResponse) => {
|
|
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
res.setHeader('Access-Control-Allow-Methods', 'GET');
|
|
res.setHeader('Cross-Origin-Opener-Policy', 'same-origin');
|
|
res.setHeader('Cross-Origin-Embedder-Policy', 'require-corp');
|
|
};
|
|
|
|
const viteServerConfig = (): Plugin => ({
|
|
name: 'add-headers',
|
|
configureServer: (server: ViteDevServer) => {
|
|
server.middlewares.use((_req: IncomingMessage, res: ServerResponse, next: () => void) => {
|
|
addHeaders(res);
|
|
next();
|
|
});
|
|
},
|
|
configurePreviewServer: (server: PreviewServer) => {
|
|
server.middlewares.use((_req: IncomingMessage, res: ServerResponse, next: () => void) => {
|
|
addHeaders(res);
|
|
next();
|
|
});
|
|
}
|
|
});
|
|
|
|
export default defineConfig({
|
|
plugins: [tailwindcss(), sveltekit(), viteServerConfig()],
|
|
|
|
// @openmeteo/weather-map-layer is linked from ../../open-meteo/weather-map-layer
|
|
// (a file: dependency), so allow Vite to serve files from the shared Projects
|
|
// root and keep a single maplibre-gl instance across drizzli and the layer.
|
|
server: {
|
|
fs: { allow: ['../..'] }
|
|
},
|
|
resolve: {
|
|
dedupe: ['maplibre-gl']
|
|
},
|
|
optimizeDeps: {
|
|
// these ship WASM and must not be pre-bundled by esbuild
|
|
exclude: ['@openmeteo/file-reader', '@openmeteo/file-format-wasm']
|
|
},
|
|
|
|
test: {
|
|
expect: { requireAssertions: true },
|
|
|
|
projects: [
|
|
{
|
|
extends: './vite.config.ts',
|
|
|
|
test: {
|
|
name: 'client',
|
|
|
|
browser: {
|
|
enabled: true,
|
|
provider: playwright(),
|
|
instances: [{ browser: 'chromium', headless: true }]
|
|
},
|
|
|
|
include: ['src/**/*.svelte.{test,spec}.{js,ts}'],
|
|
exclude: ['src/lib/server/**']
|
|
}
|
|
},
|
|
|
|
{
|
|
extends: './vite.config.ts',
|
|
|
|
test: {
|
|
name: 'server',
|
|
environment: 'node',
|
|
include: ['src/**/*.{test,spec}.{js,ts}'],
|
|
exclude: ['src/**/*.svelte.{test,spec}.{js,ts}']
|
|
}
|
|
}
|
|
]
|
|
}
|
|
});
|