This commit is contained in:
57
frontend/vite-plugins/env-config.ts
Normal file
57
frontend/vite-plugins/env-config.ts
Normal file
@@ -0,0 +1,57 @@
|
||||
import { Plugin } from "vite";
|
||||
import { EnvConfig } from "virtual:env-config";
|
||||
|
||||
const virtualModuleId = "virtual:env-config";
|
||||
const resolvedVirtualModuleId = "\0" + virtualModuleId;
|
||||
|
||||
function fallback(value: string | undefined | null, fallback: string): string {
|
||||
if (value === null || value === undefined || value === "") return fallback;
|
||||
return value;
|
||||
}
|
||||
|
||||
export function envConfig(options: {
|
||||
isDevelopment: boolean;
|
||||
clientVersion: string;
|
||||
env: Record<string, string>;
|
||||
}): Plugin {
|
||||
return {
|
||||
name: "virtual-env-config",
|
||||
resolveId(id) {
|
||||
if (id === virtualModuleId) return resolvedVirtualModuleId;
|
||||
return;
|
||||
},
|
||||
load(id) {
|
||||
if (id === resolvedVirtualModuleId) {
|
||||
const devConfig: EnvConfig = {
|
||||
isDevelopment: true,
|
||||
backendUrl: fallback(
|
||||
options.env["BACKEND_URL"],
|
||||
"http://localhost:5005",
|
||||
),
|
||||
clientVersion: options.clientVersion,
|
||||
recaptchaSiteKey: "6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI",
|
||||
quickLoginEmail: options.env["QUICK_LOGIN_EMAIL"],
|
||||
quickLoginPassword: options.env["QUICK_LOGIN_PASSWORD"],
|
||||
};
|
||||
|
||||
const prodConfig: EnvConfig = {
|
||||
isDevelopment: false,
|
||||
backendUrl: fallback(
|
||||
options.env["BACKEND_URL"],
|
||||
"https://api.monkeytype.com",
|
||||
),
|
||||
recaptchaSiteKey: options.env["RECAPTCHA_SITE_KEY"] ?? "",
|
||||
quickLoginEmail: undefined,
|
||||
quickLoginPassword: undefined,
|
||||
clientVersion: options.clientVersion,
|
||||
};
|
||||
|
||||
const envConfig = options.isDevelopment ? devConfig : prodConfig;
|
||||
return `
|
||||
export const envConfig = ${JSON.stringify(envConfig)};
|
||||
`;
|
||||
}
|
||||
return;
|
||||
},
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user