Ein "npm run build" allein startet den Dienst nicht neu. Die Oberflaeche ruft dann Endpunkte auf, die es serverseitig noch gar nicht gibt - und das sieht aus wie ein Fehler in der Funktion, nicht wie ein halbes Update. Genau daran ging gerade eine Stunde Fehlersuche drauf: Die Aufstellung eines Ausgaben-Anteils blieb leer, weil der Server den Endpunkt nicht kannte. Vite setzt den Commit beim Bauen ins Bundle, die Oberflaeche vergleicht ihn beim Start mit dem, den der Server unter /api/version meldet. Weichen sie ab, steht der Hinweis samt Kommando ueber jeder Seite. Kennt eine der beiden Seiten ihren Stand nicht, schweigt der Hinweis - falscher Alarm waere schlimmer als keiner. Beide Richtungen im Browser geprueft: bei verschiedenen Staenden erscheint er, bei gleichen nicht. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
35 lines
1.2 KiB
JavaScript
35 lines
1.2 KiB
JavaScript
import { execSync } from "node:child_process";
|
||
|
||
import { defineConfig } from "vite";
|
||
import react from "@vitejs/plugin-react";
|
||
|
||
// Der Commit, aus dem dieses Bundle stammt. Die Oberflaeche vergleicht ihn mit
|
||
// dem, den der Server meldet – laufen beide auseinander, wurde gebaut, aber der
|
||
// Dienst nicht neu gestartet. Das kostete schon mehrfach eine halbe Stunde
|
||
// Fehlersuche an einer Funktion, die es serverseitig noch gar nicht gab.
|
||
function commit() {
|
||
try {
|
||
return execSync("git rev-parse --short HEAD", { encoding: "utf8" }).trim();
|
||
} catch {
|
||
return ""; // Kein Git zur Hand – dann wird nichts verglichen.
|
||
}
|
||
}
|
||
|
||
// Im Dev-Modus wird /api an das lokale Backend weitergeleitet. Anders als in der
|
||
// Vorlage wird der /api-Präfix NICHT entfernt – das Backend bedient die Routen
|
||
// bewusst unter /api/... (ein Prozess liefert API und SPA gemeinsam aus).
|
||
// In Produktion liefert derselbe FastAPI-Prozess das gebaute Frontend mit aus.
|
||
export default defineConfig({
|
||
plugins: [react()],
|
||
define: { __APP_SHA__: JSON.stringify(commit()) },
|
||
server: {
|
||
port: 5173,
|
||
proxy: {
|
||
"/api": {
|
||
target: "http://localhost:8000",
|
||
changeOrigin: true,
|
||
},
|
||
},
|
||
},
|
||
});
|