- frontend.go: Seitenrouten liefern die index.html (no-cache), gehashte Assets unter /assets dauerhaft cachebar, sonst echtes 404 - /stats als Seite, /stats.html leitet per 301 weiter - Containerfile: Node-Stage baut das Frontend nach web/ - Vite baut nach ../web (gitignored); web/ (Vanilla-JS) gelöscht - notes/frontend.md, deploy.md angepasst Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TiXsPUqw7oeomZ8wZrQW5q
30 lines
1.0 KiB
TypeScript
30 lines
1.0 KiB
TypeScript
import { defineConfig } from "vite";
|
|
import react from "@vitejs/plugin-react";
|
|
|
|
// Im Dev-Betrieb läuft das Go-Backend separat (siehe dev.env, Port 8081).
|
|
// Vite reicht /api und /static dorthin durch -- für den Browser bleibt alles
|
|
// eine Origin, Session-Cookie und Origin-Check funktionieren unverändert.
|
|
//
|
|
// changeOrigin: false ist Pflicht: die Kurzform (nur URL) setzt es auf true
|
|
// und schreibt den Host-Header auf das Backend um. Dann passt der Origin des
|
|
// Browsers nicht mehr zum Host und checkOrigin weist jeden POST als CSRF ab.
|
|
const backend = process.env.KVER_BACKEND ?? "http://127.0.0.1:8081";
|
|
const proxy = { target: backend, changeOrigin: false };
|
|
|
|
export default defineConfig({
|
|
plugins: [react()],
|
|
// Das Go-Backend liefert das Build aus web/ aus (siehe frontend.go).
|
|
// emptyOutDir muss explizit an sein, weil das Ziel außerhalb von frontend/
|
|
// liegt.
|
|
build: {
|
|
outDir: "../web",
|
|
emptyOutDir: true,
|
|
},
|
|
server: {
|
|
proxy: {
|
|
"/api": proxy,
|
|
"/static": proxy,
|
|
},
|
|
},
|
|
});
|