writeEnv.mjs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import dotenv from 'dotenv'
  2. import { writeFileSync } from 'fs'
  3. // 加载 .env 文件 先找.local 然后对应环境文件,最后找默认的,左边的优先级最高
  4. const NODE_ENV = process.env.NODE_ENV
  5. dotenv.config({ path: NODE_ENV ? [`.env.${NODE_ENV}.local`, '.env.' + NODE_ENV, '.env'] : '.env' })
  6. const { VITE_SERVER_ORIGIN, VITE_NGINX_PROXY, VITE_API_SUFFIX_URL, VITE_RULE_SERVER_URL, VITE_MEDIA_SERVER_URL } = process.env
  7. console.log(VITE_SERVER_ORIGIN, VITE_NGINX_PROXY, VITE_API_SUFFIX_URL, VITE_RULE_SERVER_URL, VITE_MEDIA_SERVER_URL)
  8. const baseUrl = VITE_SERVER_ORIGIN + VITE_NGINX_PROXY + VITE_API_SUFFIX_URL
  9. console.log(baseUrl)
  10. const configFile = './public/config.js'
  11. const configJson = {
  12. topo: {
  13. server: baseUrl,
  14. imgServer: VITE_SERVER_ORIGIN + VITE_NGINX_PROXY,
  15. },
  16. screen: {
  17. server: baseUrl,
  18. imgServer: VITE_SERVER_ORIGIN + VITE_NGINX_PROXY,
  19. },
  20. rule: {
  21. server: VITE_RULE_SERVER_URL,
  22. iotServer: baseUrl,
  23. },
  24. designer: {
  25. baseServer: VITE_SERVER_ORIGIN + VITE_NGINX_PROXY,
  26. server: baseUrl,
  27. },
  28. media: VITE_MEDIA_SERVER_URL,
  29. }
  30. // 大屏项目会存在配置找不到的情况,增加同步请求的 js 配置文件,避免异步请求延迟导致的异常
  31. const configJs = `window.allEnv = ${JSON.stringify(configJson, null, 2)}`
  32. // 文件写入
  33. try {
  34. // 将.env 中的值进行赋值之后写入 config.json
  35. writeFileSync(configFile, configJs, { flag: 'w+', encoding: 'utf-8' })
  36. console.log(`-> 更新配置成功`)
  37. console.log(configJson)
  38. console.log(`===============================================================`)
  39. } catch (err) {
  40. console.error(`-> 更新配置成功: `)
  41. console.error(err)
  42. }