66 lines
1.5 KiB
JavaScript
66 lines
1.5 KiB
JavaScript
// @ts-check
|
|
import { defineConfig, mergeConfig } from "vite";
|
|
import { baseConfig } from "./vite.config.mjs";
|
|
import {
|
|
apiServerBaseURL,
|
|
apiServerPort,
|
|
} from "./configs/vars.mjs";
|
|
|
|
const config = defineConfig(async (configEnv) => {
|
|
/**
|
|
* @type {import("vite").UserConfig}
|
|
*/
|
|
const targetBackend = `${apiServerBaseURL}${apiServerPort ? `:${apiServerPort}` : ''}`;
|
|
const proxyConfig = {};
|
|
if (targetBackend.includes("kemono.su")) {
|
|
proxyConfig["/api/v1/creators"] = {
|
|
target: "https://kemono.su", // target the base URL for the proxy
|
|
changeOrigin: true,
|
|
secure: true,
|
|
rewrite: (path) => path.replace(/^\/api\/v1\/creators/, '/api/v1/creators.txt'),
|
|
};
|
|
}
|
|
proxyConfig["/api"] = {
|
|
target: targetBackend,
|
|
changeOrigin: true,
|
|
secure: true,
|
|
};
|
|
proxyConfig["/icons"] = {
|
|
target: targetBackend,
|
|
changeOrigin: true,
|
|
secure: true,
|
|
};
|
|
proxyConfig["/banners"] = {
|
|
target: targetBackend,
|
|
changeOrigin: true,
|
|
secure: true,
|
|
};
|
|
proxyConfig["/thumbnail"] = {
|
|
target: targetBackend,
|
|
changeOrigin: true,
|
|
secure: true,
|
|
};
|
|
proxyConfig["/data"] = {
|
|
target: targetBackend,
|
|
changeOrigin: true,
|
|
secure: true,
|
|
};
|
|
|
|
const devConfig = {
|
|
server: {
|
|
host: "0.0.0.0",
|
|
port: 3450,
|
|
strictPort: true,
|
|
proxy: proxyConfig,
|
|
allowedHosts: ["all"],
|
|
},
|
|
};
|
|
|
|
const resolvedBase = await baseConfig(configEnv);
|
|
const finalConfig = mergeConfig(resolvedBase, devConfig);
|
|
|
|
return finalConfig;
|
|
});
|
|
|
|
export default config;
|