Files
jap_web_ng/vite.config.ts
T
2026-09-14 14:32:38 +03:00

39 lines
1.5 KiB
TypeScript

import { defineConfig } from 'vite';
export default defineConfig({
// @sqlite.org/sqlite-wasm:
// - JS-часть идёт как ESM (sqlite3-bundler-friendly.mjs),
// - .wasm подхватывается относительно import.meta.url.
// Vite из коробки копирует такие ассеты в dist и переписывает URL,
// явно добавляем .wasm в assetsInclude и не оптимизируем пакет,
// чтобы dev-сервер отдавал оригинальный .wasm байт-в-байт.
assetsInclude: ['**/*.wasm'],
optimizeDeps: {
exclude: ['@sqlite.org/sqlite-wasm'],
},
worker: {
// Воркер БД (Шаг 2) будет в формате ESM — так sqlite-wasm работает корректно.
format: 'es',
},
server: {
headers: {
// Нужно для OPFS + SharedArrayBuffer (sqlite-wasm использует воркеры).
// COOP/COEP обязательны для crossOriginIsolated.
'Cross-Origin-Opener-Policy': 'same-origin',
'Cross-Origin-Embedder-Policy': 'require-corp',
},
},
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();
});
},
},
],
});