utils.ts 1017 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import * as dotenv from 'dotenv';
  2. export interface ViteEnv {
  3. VITE_PORT: number;
  4. VITE_OPEN: boolean;
  5. VITE_USE_MOCK: boolean;
  6. VITE_PUBLIC_PATH: string;
  7. VITE_PROXY: [string, string][];
  8. }
  9. export function loadEnv(): ViteEnv {
  10. const env = process.env.NODE_ENV;
  11. const ret: any = {};
  12. const envList = [`.env.${env}.local`, `.env.${env}`, '.env.local', '.env', ,]
  13. envList.forEach((e) => {
  14. dotenv.config({
  15. path: e,
  16. });
  17. });
  18. for (const envName of Object.keys(process.env)) {
  19. let realName = (process.env as any)[envName].replace(/\\n/g, '\n');
  20. realName = realName === 'true' ? true : realName === 'false' ? false : realName;
  21. if (envName === 'VITE_PORT') {
  22. realName = Number(realName);
  23. }
  24. if (envName === 'VITE_OPEN') {
  25. realName = Boolean(realName);
  26. }
  27. if (envName === 'VITE_PROXY') {
  28. try {
  29. realName = JSON.parse(realName);
  30. } catch (error) { }
  31. }
  32. ret[envName] = realName;
  33. process.env[envName] = realName;
  34. }
  35. return ret;
  36. }