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
789 B
34 lines
789 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 |
|
}
|
|
|