build-proxy.js 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. const _toString = Object.prototype.toString;
  2. /**
  3. * 开发模式,获取代理配置
  4. * 注: 若配置项VUE_APP_BASE_API包含协议、域名[IP]、端口[可选],开发模式则默认配置代理
  5. */
  6. export function getProxyConfig(env, insertYuxpProxy) {
  7. let baseApi = env.VITE_APP_BASE_AUTH || ''; // 应用服务前缀URL
  8. let proxyPrefix = env.VITE_APP_PROXY_API || ''; // 代理API前缀
  9. const match = /^(https?:\/\/[0-9a-z.-]+)(:[0-9]+)?([/0-9a-z.]+)?/i; // 匹配URL(协议+域名+端口)
  10. // 可数组配置多个
  11. proxyPrefix = proxyPrefix.split(',');
  12. if (_toString.call(baseApi) === '[object String]') {
  13. baseApi = baseApi.split(',').filter((api) => {
  14. return match.test(api);
  15. });
  16. }
  17. let devServerProxy = {
  18. '^/zzh-api': {
  19. target: 'http://39.106.34.227',
  20. changeOrigin: true,
  21. logLevel: 'debug',
  22. rewrite: (path) => {
  23. return path.replace(/^\/zzh-api/, '');
  24. },
  25. },
  26. '^/zzh': {
  27. target: 'http://39.106.34.227',
  28. changeOrigin: true,
  29. logLevel: 'debug',
  30. rewrite: (path) => {
  31. return path.replace(/^\/zzh/, '');
  32. },
  33. },
  34. '^/rest': {
  35. target: 'http://39.106.34.227',
  36. changeOrigin: true,
  37. },
  38. '^/api/infra_be/': {
  39. target: ' http://dohb.exocr.com',
  40. changeOrigin: true,
  41. },
  42. '^/agentfile': {
  43. target: 'http://10.192.72.11:9000/static',
  44. changeOrigin: true,
  45. rewrite: (path) => {
  46. return path.replace(/^\/agentfile/, '');
  47. },
  48. },
  49. '^/ai-manage-web': {
  50. target: 'http://210.12.198.139:9090',
  51. changeOrigin: true,
  52. },
  53. '^/ai-oca': {
  54. target: 'http://210.12.198.139:9090',
  55. changeOrigin: true,
  56. },
  57. '^/ai-trans-analysis': {
  58. target: 'http://210.12.198.139:9090',
  59. changeOrigin: true,
  60. },
  61. '^/ai-trans-mgr': {
  62. target: 'http://210.12.198.139:9090',
  63. changeOrigin: true,
  64. },
  65. };
  66. const l = baseApi.length - 1;
  67. if (l > -1) {
  68. // VUE_APP_BASE_API代理配置演示,/dev-proxy-api/xxx-api/* => https://172.16.20.92:8102/xxx-api/*
  69. // 详见: https://cli.vuejs.org/config/#devserver-proxy
  70. if (Array.isArray(proxyPrefix)) {
  71. proxyPrefix.forEach((item, idx) => {
  72. const matchResult = match.exec(baseApi[idx > l ? l : idx]);
  73. devServerProxy[`^(?!.*package\/api\/)(/(?!src)[a-zA-Z-]+)*${item}.*`] = {
  74. target: `${matchResult.input}`, // + (matchResult[3] || '')}`, // 协议+域名
  75. changeOrigin: true,
  76. };
  77. });
  78. }
  79. }
  80. insertYuxpProxy(devServerProxy);
  81. const proxyShuffleApi = (env.VITE_APP_PROXY_SHUFFLE || '').split(',');
  82. proxyShuffleApi.forEach((item) => {
  83. // 正则表达式,添加给定代理的前缀服务模式匹配 业务功能香瓜接口代理到相应后端
  84. devServerProxy[`^(?!.*package\/api\/)(/(?!src)[a-zA-Z-]+)*${item}.*`] = {
  85. target: env.VITE_APP_BASE_API,
  86. };
  87. });
  88. devServerProxy = JSON.stringify(devServerProxy) == '{}' ? false : devServerProxy;
  89. console.log('配置代理', devServerProxy);
  90. return devServerProxy;
  91. }