lazyBoy/apps/web/vite.config.ts

41 lines
1.1 KiB
TypeScript

import { readFileSync } from "node:fs";
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
function proxyToApi() {
return {
target: "http://127.0.0.1:3101",
ws: true,
configure(proxy: { on: (event: string, listener: (req: { getHeader: (name: string) => unknown; setHeader: (name: string, value: string) => void; removeHeader: (name: string) => void }) => void) => void }) {
proxy.on("proxyReq", (proxyReq) => {
const host = proxyReq.getHeader("host");
if (typeof host === "string" && host) proxyReq.setHeader("origin", `http://${host}`);
proxyReq.removeHeader("sec-fetch-site");
});
},
};
}
export default defineConfig({
plugins: [
react(),
{
name: "desktop-viewer",
generateBundle() {
this.emitFile({
type: "asset",
fileName: "vnc.html",
source: readFileSync(new URL("./vnc.html", import.meta.url), "utf8"),
});
},
},
],
build: { outDir: "dist", emptyOutDir: true },
server: {
host: true,
port: 5173,
strictPort: true,
proxy: { "/api": proxyToApi(), "/view": proxyToApi() },
},
});