You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
799 B
34 lines
799 B
/** |
|
* Used to parse the .env.development proxy configuration |
|
*/ |
|
import type { ProxyOptions } from 'vite'; |
|
|
|
type ProxyItem = [string, string]; |
|
|
|
type ProxyList = ProxyItem[]; |
|
|
|
type ProxyTargetList = Record<string, ProxyOptions>; |
|
|
|
const httpsRE = /^https:\/\//; |
|
|
|
/** |
|
* Generate proxy |
|
* @param list |
|
*/ |
|
export function createProxy(list: ProxyList = []) { |
|
const ret: ProxyTargetList = {}; |
|
for (const [prefix, target] of list) { |
|
const isHttps = httpsRE.test(target); |
|
|
|
// https://github.com/http-party/node-http-proxy#options |
|
ret[prefix] = { |
|
target: target, |
|
changeOrigin: true, |
|
ws: true, |
|
rewrite: (path) => path.replace(new RegExp(`^${prefix}`), ''), |
|
// https is require secure=false |
|
...(isHttps ? { secure: false } : {}), |
|
}; |
|
} |
|
return ret; |
|
}
|
|
|