35 lines
		
	
	
		
			780 B
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			780 B
		
	
	
	
		
			TypeScript
		
	
	
| /**
 | |
|  * 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,
 | |
|       changeOrigin: true,
 | |
|       ws: true,
 | |
|       rewrite: path => path.replace(new RegExp(`^${prefix}`), ''),
 | |
|       // https is require secure=false
 | |
|       ...(isHttps ? { secure: false } : {}),
 | |
|     }
 | |
|   }
 | |
|   return ret
 | |
| }
 |