frontend/vite.config.ts
Rama main · réplica de lectura del repositorio original.
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
export default defineConfig(({ mode }) => ({
plugins: [react()],
server: {
// NUR IM TESTLAUF die Repo-Wurzel freigeben, nicht im Entwicklungsserver.
//
// Anlass: Der README-Waechter in src/i18n.test.ts liest ../../README.md
// ueber Vites ?raw-Import (Begruendung dort: das Projekt fuehrt bewusst
// kein @types/node). Sobald eine `test`-Konfiguration existiert, greift
// Vites Dateisperre und verweigert alles ausserhalb von frontend/ — der
// Test scheitert mit "Denied ID .../README.md?raw", also an der
// Aufloesung, nicht an der Sache.
//
// Die erste Fassung stellte `allow: [".."]` unbedingt hierher. Das war ein
// FUND der blinden Panel-Stimme, gemessen am laufenden `npm run dev`:
// Damit lieferte der Entwicklungsserver auch `accounts.json` aus — die
// Datei, die .gitignore:19 als Geheimnis fuehrt — mit HTTP 200 statt 403.
// Vites eingebautes fs.deny schuetzt nur `.env`, nicht unsere Ablage.
//
// Eine engere Freigabe reicht nicht: `allow: [".", "../README.md"]` wird
// trotzdem abgelehnt, weil die ?raw-Anfrage nicht auf den blossen
// Dateipfad passt (gemessen). Also die Weite behalten, aber an den
// Testlauf binden — vitest setzt `mode` auf "test".
...(mode === "test" ? { fs: { allow: [".."] } } : {}),
proxy: {
"/api": {
target: "http://localhost:3100",
changeOrigin: true,
},
},
},
build: {
outDir: "dist",
emptyOutDir: true,
},
test: {
// happy-dom statt jsdom: gemessen +9 statt +37 Pakete im Baum
// (`npm install --no-save --dry-run`, mit Netz). Das Repo haelt
// Abhaengigkeiten knapp, und die Lieferketten-Flaeche war der
// Haupteinwand in Issue #72 gegen einen DOM-Renderer ueberhaupt.
//
// GRENZE DIESER BEGRUENDUNG, von der GPT-Panel-Stimme benannt: Die
// Paketzahl misst die Lieferkette, NICHT die DOM-Treue. Ob eine dieser
// Testdateien unter jsdom anders liefe, ist hier nicht geprueft — jsdom
// ist nicht installiert. Die Wahl ist also eine Abwaegung mit einer
// gemessenen und einer ungemessenen Seite, kein Befund. Wer auf jsdom
// wechseln will, braucht eine Zeile hier und eine Abhaengigkeit.
environment: "happy-dom",
// Kein `globals: true`: Alle sieben Testdateien importieren describe/it
// ausdruecklich aus "vitest", brauchen es also nicht — und der Schalter
// haette eine Nebenwirkung, die genau das Gegenteil dessen bewirkt, was
// hier steht: Er aktiviert die automatische Aufraeumroutine von
// @testing-library/react. Solange die laeuft, ist unsere eigene
// wirkungslos und damit UNBEWEISBAR — man kann sie loeschen, ohne dass
// ein Test rot wird. Genau so stand es hier, und genau das hat die blinde
// Panel-Stimme gemessen.
//
// Jetzt ist test-setup.ts der einzige Eigentuemer des Aufraeumens, und
// jede seiner drei Zeilen ist einzeln rot-beweisbar.
setupFiles: ["./src/test-setup.ts"],
},
}));