2021-07-20 17:16:42 +08:00

42 lines
1.1 KiB
TypeScript

import * as dotenv from "dotenv";
export interface ViteEnv {
VITE_PORT: number;
VITE_OPEN: boolean;
VITE_USE_MOCK: boolean;
VITE_PUBLIC_PATH: string;
VITE_PROXY: [string, string][];
}
export function loadEnv(): ViteEnv {
const env = process.env.NODE_ENV;
const ret: any = {};
// eslint-disable-next-line no-sparse-arrays
const envList = [`.env.${env}.local`, `.env.${env}`, ".env.local", ".env", ,];
envList.forEach(e => {
dotenv.config({
path: e
});
});
for (const envName of Object.keys(process.env)) {
let realName = (process.env as any)[envName].replace(/\\n/g, "\n");
realName =
realName === "true" ? true : realName === "false" ? false : realName;
if (envName === "VITE_PORT") {
realName = Number(realName);
}
if (envName === "VITE_OPEN") {
realName = Boolean(realName);
}
if (envName === "VITE_PROXY") {
try {
realName = JSON.parse(realName);
// eslint-disable-next-line no-empty
} catch (error) {}
}
ret[envName] = realName;
process.env[envName] = realName;
}
return ret;
}