Files
jap_web_ng/vite.config.ts
T

38 lines
1.5 KiB
TypeScript
Raw Normal View History

2026-09-13 18:43:42 +03:00
import { defineConfig } from 'vite';
export default defineConfig({
2026-09-14 14:32:38 +03:00
// @sqlite.org/sqlite-wasm:
// - JS-часть идёт как ESM (sqlite3-bundler-friendly.mjs),
// - .wasm подхватывается относительно import.meta.url.
// Vite из коробки копирует такие ассеты в dist и переписывает URL,
// явно добавляем .wasm в assetsInclude и не оптимизируем пакет,
// чтобы dev-сервер отдавал оригинальный .wasm байт-в-байт.
2026-09-13 18:43:42 +03:00
assetsInclude: ['**/*.wasm'],
optimizeDeps: {
2026-09-14 14:32:38 +03:00
exclude: ['@sqlite.org/sqlite-wasm'],
},
worker: {
// Воркер БД (Шаг 2) будет в формате ESM — так sqlite-wasm работает корректно.
format: 'es',
2026-09-13 18:43:42 +03:00
},
server: {
headers: {
2026-09-14 14:32:38 +03:00
// Нужно для OPFS + SharedArrayBuffer (sqlite-wasm использует воркеры).
// COOP/COEP обязательны для crossOriginIsolated.
'Cross-Origin-Opener-Policy': 'same-origin',
2026-09-13 18:43:42 +03:00
'Cross-Origin-Embedder-Policy': 'require-corp',
},
},
2026-09-14 14:32:38 +03:00
plugins: [
{
name: 'configure-response-headers',
configureServer: (server) => {
server.middlewares.use((_req, res, next) => {
res.setHeader('Cross-Origin-Embedder-Policy', 'require-corp');
res.setHeader('Cross-Origin-Opener-Policy', 'same-origin');
next();
});
},
},
],
});