Files
reader-star/apps/admin/build/config/proxy.ts
rjl 133d9a903a feat(admin): 更新题库管理和环境配置
- 禁用强制登录以便本地开发
- 更新开发环境API基础URL为本地服务
- 在代理配置中添加secure: false以支持HTTPS接口
- 修复请求响应中字符串类型数据的JSON解析问题
- 新增题目类型相关常量定义和类型声明
- 扩展transformRecordToOption函数支持数字键值
- 更新题库相关API接口和类型定义
- 在竞赛配置中添加题目分数字段
- 重构题库管理界面,实现分类和题目的完整CRUD操作
- 删除未使用的模板管理组件
2026-01-28 08:33:36 +08:00

66 lines
1.9 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import type { ProxyOptions } from 'vite'
import { consola } from 'consola'
import { bgRed, bgYellow, green, lightBlue } from 'kolorist'
import { createServiceConfig } from '../../src/utils/service'
/**
* 设置 HTTP 代理
*
* @param env - 当前环境变量
* @param enable - 是否启用 HTTP 代理
*/
export function createViteProxy(env: Env.ImportMeta, enable: boolean) {
const isEnableHttpProxy = enable && env.VITE_HTTP_PROXY === 'Y'
if (!isEnableHttpProxy)
return undefined
const isEnableProxyLog = env.VITE_PROXY_LOG === 'Y'
const { baseURL, proxyPattern, other } = createServiceConfig(env)
const proxy: Record<string, ProxyOptions> = createProxyItem({ baseURL, proxyPattern }, isEnableProxyLog)
other.forEach((item) => {
Object.assign(proxy, createProxyItem(item, isEnableProxyLog))
})
return proxy
}
/**
* 创建 HTTP 代理项
*
* @param item - 服务配置项
* @param enableLog - 是否启用日志记录
*/
function createProxyItem(item: App.Service.ServiceConfigItem, enableLog: boolean) {
const proxy: Record<string, ProxyOptions> = {}
proxy[item.proxyPattern] = {
target: item.baseURL,
changeOrigin: true,
secure: false, // 如果是https接口需要配置这个参数
configure: (_proxy, options) => {
_proxy.on('proxyReq', (_proxyReq, req, _res) => {
if (!enableLog)
return
const requestUrl = `${lightBlue('[代理地址]')}: ${bgYellow(` ${req.method} `)} ${green(`${item.proxyPattern}${req.url}`)}`
const proxyUrl = `${lightBlue('[真实请求地址]')}: ${green(`${options.target}${req.url}`)}`
consola.log(`${requestUrl}\n${proxyUrl}`)
})
_proxy.on('error', (_err, req, _res) => {
if (!enableLog)
return
consola.log(bgRed(`错误: ${req.method} `), green(`${options.target}${req.url}`))
})
},
rewrite: path => path.replace(new RegExp(`^${item.proxyPattern}`), ''),
}
return proxy
}