import { readFileSync } from "node:fs"; import { dirname, resolve } from "node:path"; import { fileURLToPath } from "node:url"; import react from "@vitejs/plugin-react"; import { defineConfig, type Plugin } from "vite"; const webDir = dirname(fileURLToPath(import.meta.url)); const localVersion = readFileSync(resolve(webDir, "../VERSION"), "utf8").trim() || "dev"; const redirectAdminPath: Plugin = { name: "redirect-admin-path", configureServer(server) { server.middlewares.use((request, response, next) => { if (request.url === "/admin") { response.statusCode = 301; response.setHeader("Location", "/admin/"); response.end(); return; } next(); }); }, }; export default defineConfig({ base: process.env.VITE_BASE || "/", plugins: [redirectAdminPath, react()], resolve: { alias: { "@": resolve(webDir, "src"), "tdesign-react": resolve(webDir, "node_modules/tdesign-react"), }, dedupe: ["react", "react-dom", "tdesign-react"], }, define: { __APP_VERSION__: JSON.stringify(localVersion), }, server: { host: "0.0.0.0", port: 3000, proxy: { "/api": { target: `http://127.0.0.1:${process.env.MIRAGENFLOW_SERVER_PORT || "3100"}`, changeOrigin: true, ws: true, }, "/admin": { target: `http://127.0.0.1:${process.env.MIRAGENFLOW_ADMIN_PORT || "3003"}`, changeOrigin: true, ws: true, }, }, }, });