import { sveltekit } from '@sveltejs/kit/vite'; import { defineConfig } from 'vite'; import { execSync } from 'node:child_process'; const tokensPlugin = { name: 'minstrel-tokens', buildStart() { execSync('node scripts/tokens-to-css.js', { stdio: 'inherit' }); } }; // Build-only plugin that injects Go html/template tokens into the // rendered index.html so the runtime Go server can substitute per- // instance branding. In dev (`vite dev`), the marker stays as a // comment and the SPA falls back to the literal app.html title. const injectGoTokensPlugin = { name: 'minstrel-inject-go-tokens', apply: 'build' as const, enforce: 'post' as const, transformIndexHtml(html: string) { const titleTag = `{{ .AppName }}`; const headBlock = ` `; return html .replace('Minstrel', titleTag) .replace('', headBlock); } }; export default defineConfig({ plugins: [tokensPlugin, sveltekit(), injectGoTokensPlugin], server: { port: 5173, proxy: { '/api': { target: 'http://localhost:4533', changeOrigin: true }, '/rest': { target: 'http://localhost:4533', changeOrigin: true } } } });