import { sveltekit } from '@sveltejs/kit/vite'; import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; import { SvelteKitPWA } from '@vite-pwa/sveltekit'; import { createOfflineFirstPWAConfig, themeBridge } from '@mana/shared-pwa'; export default defineConfig({ plugins: [ tailwindcss(), sveltekit(), SvelteKitPWA( // Wordeck nutzt sql.js (WASM) für lokale Spaced-Repetition — // createOfflineFirstPWAConfig excludet WASM-Blobs vom Precache, // damit sie nicht das 8-MiB-Cache-Cap pro Datei sprengen. createOfflineFirstPWAConfig({ name: 'Wordeck', shortName: 'Wordeck', description: 'Spaced Repetition, text-first. Lernkarten-App des Vereins mana e.V.', ...themeBridge('forest'), shortcuts: [ { name: 'Meine Decks', short_name: 'Decks', url: '/' }, { name: 'Entdecken', short_name: 'Entdecken', url: '/explore' }, ], }) ), ], server: { port: Number(process.env.WORDECK_WEB_PORT ?? 3082), host: true, }, // @mana/* aus Verdaccio publishen Raw-.ts (main: src/index.ts). // Node 22 verweigert Type-Stripping in node_modules → Vite muss // die Pakete im SSR selbst transformieren statt extern an Node // weiterzureichen. Plus client-side: optimizeDeps mit esbuild // erstickt an .svelte.ts-Files, die `import type {}`/`export type` // enthalten — also vom Pre-Bundling ausnehmen, dann übernimmt der // reguläre Vite-Transform den TS-Strip. ssr: { noExternal: [/^@mana\//], }, optimizeDeps: { exclude: ['@mana/shared-ui', '@mana/shared-theme', '@mana/shared-icons'], }, });