Files

56 lines
1.6 KiB
TypeScript

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,
},
},
},
});