import { fileURLToPath } from "node:url"; import { defineConfig } from "vite"; import { configDefaults } from "vitest/config"; export default defineConfig({ // Ohne dedupe lädt der Controller three aus seinem eigenen node_modules -> zwei Kopien. resolve: { dedupe: ["three", "three-mesh-bvh"] }, // Der BVH-Worker wird dynamisch aus three-mesh-bvh/src/workers/ geladen und darf nicht vorgebündelt werden. optimizeDeps: { exclude: ["three-mesh-bvh", "three-player-controller"] }, // Zwei Seiten: das Spiel und die Animations-Testseite. Ohne diese Liste baut vite nur index.html. build: { rollupOptions: { input: { main: fileURLToPath(new URL("./index.html", import.meta.url)), animationen: fileURLToPath(new URL("./animationen.html", import.meta.url)), }, }, }, server: { host: true }, // Parallele Sitzungen legen ihre Arbeitsbäume unter .claude/worktrees/ in diesem Repository // an. Ohne diesen Ausschluss sammelt vitest deren Testdateien mit ein — das verdoppelt die // Zahl und lässt unseren Lauf fehlschlagen, sobald dort gerade ein Test rot ist. test: { exclude: [...configDefaults.exclude, "**/.claude/**"] }, });