vite.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /* vite相关 */
  2. import dotenv from 'dotenv'
  3. export interface ViteEnv {
  4. VITE_PORT: number
  5. VITE_OPEN: boolean
  6. VITE_COMPRESSION: boolean
  7. VITE_PUBLIC_PATH: string
  8. VITE_API_URL: string
  9. }
  10. export function isBuild(command: string): boolean {
  11. return command === 'build'
  12. }
  13. export function isDev(mode: string): boolean {
  14. return mode === 'development'
  15. }
  16. export function isProd(mode: string | undefined): boolean {
  17. return mode === 'production'
  18. }
  19. // Read all environment variable configuration files to process.env
  20. export function loadEnv(mode: string): ViteEnv {
  21. const ret: any = {}
  22. const envList = [`.env.${mode}.local`, `.env.${mode}`, '.env.local', '.env']
  23. envList.forEach((e) => {
  24. dotenv.config({ path: e })
  25. })
  26. for (const envName of Object.keys(process.env)) {
  27. let realName = (process.env as any)[envName].replace(/\\n/g, '\n')
  28. realName = realName === 'true' ? true : realName === 'false' ? false : realName
  29. if (envName === 'VITE_PORT') realName = Number(realName)
  30. if (envName === 'VITE_OPEN' || envName === 'VITE_COMPRESSION') realName = Boolean(realName)
  31. if (envName === 'VITE_PROXY') {
  32. try {
  33. realName = JSON.parse(realName)
  34. } catch (error) {
  35. realName = ''
  36. }
  37. }
  38. ret[envName] = realName
  39. if (typeof realName === 'string') {
  40. process.env[envName] = realName
  41. } else if (typeof realName === 'object') {
  42. process.env[envName] = JSON.stringify(realName)
  43. }
  44. }
  45. return ret
  46. }