wordeck/apps/web/vite.config.ts
Till JS 633f051f2d
Some checks are pending
CI / validate (push) Waiting to run
feat(web): PWA-Setup über @mana/shared-pwa (Adoption #9)
createOfflineFirstPWAConfig — schließt sql-wasm.wasm aus dem Precache
(Wordeck nutzt sql.js für lokales Spaced-Repetition). themeBridge('forest')
#117e39 passend zum data-theme='forest'. 2 Shortcuts (Decks + Entdecken).
OfflineBanner/UpdatePrompt/InstallPrompt unter skip-link. Icons aus
wordeck-native AppIcon-1024.

Build grün.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 00:44:38 +02:00

44 lines
1.5 KiB
TypeScript

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'],
},
});