mirror of
https://github.com/monkeytypegame/monkeytype.git
synced 2026-01-12 18:34:05 +08:00
- **build: replace dotenv with vite env variables (@fehmer)** - **build: combine vite config into a single file (@fehmer)** --------- Co-authored-by: Miodec <jack@monkeytype.com>
57 lines
1.7 KiB
TypeScript
57 lines
1.7 KiB
TypeScript
import { Plugin } from "vite";
|
|
import { EnvConfig } from "virtual:env-config";
|
|
|
|
const virtualModuleId = "virtual:env-config";
|
|
const resolvedVirtualModuleId = "\0" + virtualModuleId;
|
|
|
|
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;
|
|
},
|
|
};
|
|
}
|
|
|
|
function fallback(value: string | undefined | null, fallback: string): string {
|
|
if (value === null || value === undefined || value === "") return fallback;
|
|
return value;
|
|
}
|