/// /// import { defineConfig, loadEnv } from "vite"; import viteTsconfigPaths from "vite-tsconfig-paths"; import svgr from "vite-plugin-svgr"; import { reactRouter } from "@react-router/dev/vite"; import { configDefaults } from "vitest/config"; export default defineConfig(({ mode }) => { const { VITE_BACKEND_HOST = "127.0.0.1:3000", VITE_USE_TLS = "false", VITE_FRONTEND_PORT = "3001", VITE_INSECURE_SKIP_VERIFY = "false", } = loadEnv(mode, process.cwd()); const USE_TLS = VITE_USE_TLS === "true"; const INSECURE_SKIP_VERIFY = VITE_INSECURE_SKIP_VERIFY === "true"; const PROTOCOL = USE_TLS ? "https" : "http"; const WS_PROTOCOL = USE_TLS ? "wss" : "ws"; const API_URL = `${PROTOCOL}://${VITE_BACKEND_HOST}/`; const WS_URL = `${WS_PROTOCOL}://${VITE_BACKEND_HOST}/`; const FE_PORT = Number.parseInt(VITE_FRONTEND_PORT, 10); return { plugins: [ !process.env.VITEST && reactRouter(), viteTsconfigPaths(), svgr(), ], server: { port: FE_PORT, proxy: { "/api": { target: API_URL, changeOrigin: true, secure: !INSECURE_SKIP_VERIFY, }, "/ws": { target: WS_URL, ws: true, changeOrigin: true, secure: !INSECURE_SKIP_VERIFY, }, "/socket.io": { target: WS_URL, ws: true, changeOrigin: true, secure: !INSECURE_SKIP_VERIFY, // rewriteWsOrigin: true, }, }, }, ssr: { noExternal: ["react-syntax-highlighter"], }, clearScreen: false, test: { environment: "jsdom", setupFiles: ["vitest.setup.ts"], reporters: "basic", exclude: [...configDefaults.exclude, "tests"], coverage: { reporter: ["text", "json", "html", "lcov", "text-summary"], reportsDirectory: "coverage", include: ["src/**/*.{ts,tsx}"], }, }, }; });