import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import { createProxyMiddleware } from "http-proxy-middleware";
import proxyMiddleware from "./proxyMiddleware.js";
export default defineConfig({
plugins: [vue()],
server: {
proxy: {
"/api": {
target: "http://localhost:3000",
changeOrigin: true,
configure: proxyMiddleware(),
},
},
},
});
import fs from "node:fs";
import path from "node:path";
const logPath = path.join(__dirname, "proxyLog.json");
let logs = {};
if (fs.existsSync(logPath)) {
logs = JSON.parse(fs.readFileSync(logPath, "utf8"));
}
export function createLoggingProxyMiddleware() {
return (proxy) => {
proxy.on("proxyRes", (response, req, res) => {
let data = "";
response.on("data", (chunk) => (data += chunk.toString("utf8")));
response.on("end", () => {
const url = req.url;
const method = req.method.toLowerCase();
const tag = url + "/" + method;
logs[tag] = {
url,
method,
data,
};
fs.writeFileSync(logPath, JSON.stringify(logs, null, 2));
});
});
};
}
export default createLoggingProxyMiddleware;