import type { ProxyOptions } from 'vite'; type ProxyItem = [string, string]; type ProxyList = ProxyItem[]; type ProxyTargetList = Record; const httpsRE = /^https:\/\//; /** * Generate proxy * @param list */ export function createProxy(list: ProxyList = []) { const ret: ProxyTargetList = {}; for (const [prefix, target, replaceStr] of list) { const isHttps = httpsRE.test(target); console.log(`Proxy config loaded: ${prefix} => ${target}`); if (prefix.length > 255) { throw new Error('字符长度超出255个字符'); } // https://github.com/http-party/node-http-proxy#options ret[prefix] = { target: target, changeOrigin: true, ws: true, timeout: 600000, rewrite: (path) => { // 添加日志以便调试路径重写 let reStr = replaceStr==undefined?'':replaceStr; console.log(`Proxy triggered - Rewriting path: ${path} => ${target+ path.replace(new RegExp(`^${prefix}`),reStr)}`); return path.replace(new RegExp(`^${prefix}`), reStr); }, // https is require secure=false ...(isHttps ? { secure: false } : {}), }; } // 添加调试日志,显示所有代理配置 console.log('All proxy configurations:', ret); return ret; }