Files
sionrui/frontend/app/web-gold/vite.config.js
2026-01-17 14:43:42 +08:00

79 lines
2.4 KiB
JavaScript

/* eslint-env node */
import path from 'node:path'
import { defineConfig, loadEnv } from 'vite'
import { fileURLToPath, URL } from 'node:url'
import tailwindcss from '@tailwindcss/vite'
import process from 'node:process'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import vueDevTools from 'vite-plugin-vue-devtools'
import UnoCSS from 'unocss/vite'
// import electron from 'vite-plugin-electron/simple'
/**
* Vite 配置文件
* 支持 TypeScript 和 JavaScript
* @param {Object} param0 - 配置参数
* @param {string} param0.mode - 环境模式
* @returns {import('vite').UserConfig}
*/
export default defineConfig(({ mode }) => {
const env = loadEnv(mode, process.cwd(), '')
const DEV_TOKEN = env.VITE_DEV_TOKEN || ''
const TENANT_ID = env.VITE_TENANT_ID || '1'
const API_TARGET = env.VITE_PROXY_TARGET || 'http://localhost:9900'
return {
plugins: [
vue(),
vueJsx(),
UnoCSS(),
vueDevTools(),
tailwindcss()
],
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url)),
'@gold': fileURLToPath(new URL('../../', import.meta.url))
},
},
server: {
proxy: {
// 代理 /webApi 开头的请求
'/webApi': {
target: API_TARGET,
changeOrigin: true,
rewrite: (path) => path.replace(/^\/webApi/, ''),
configure: (proxy, options) => {
proxy.on('proxyReq', (proxyReq, req) => {
// 从客户端请求头中获取 authorization
const authHeader = req.headers?.authorization
if (authHeader) {
proxyReq.setHeader('authorization', authHeader)
} else if (DEV_TOKEN) {
// 兜底:使用环境变量中的 token
proxyReq.setHeader('authorization', `Bearer ${DEV_TOKEN}`)
}
// 添加 RuoYi 租户 ID
proxyReq.setHeader('tenant-id', TENANT_ID)
})
},
},
// OSS 代理 - 用于直传上传
'/oss': {
target: 'https://muye-ai-chat.oss-cn-hangzhou.aliyuncs.com',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/oss/, ''),
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
'Access-Control-Allow-Headers': '*',
},
},
},
},
}
})