feat:云同步,部分功能生效
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
import { defineConfig } from 'vite'
|
||||
import { defineConfig, loadEnv } from 'vite'
|
||||
import vue from '@vitejs/plugin-vue'
|
||||
import { resolve } from 'path'
|
||||
import { dirname, resolve } from 'node:path'
|
||||
import { fileURLToPath } from 'node:url'
|
||||
|
||||
const __dirname = dirname(fileURLToPath(import.meta.url))
|
||||
|
||||
export default defineConfig(({ mode }) => {
|
||||
// Use `vite build --mode maui` to emit artifacts into the MAUI app's `wwwroot` for embedded hosting.
|
||||
@@ -8,6 +11,20 @@ export default defineConfig(({ mode }) => {
|
||||
? resolve(__dirname, '../Hua.Todo.Maui/wwwroot')
|
||||
: resolve(__dirname, 'dist')
|
||||
|
||||
// 主动加载 .env 文件,vite.config.ts 执行时 Vite 尚未自动加载
|
||||
const env = loadEnv(mode, __dirname, '')
|
||||
|
||||
// Dev 模式下各端点的代理目标,严格从环境变量读取:
|
||||
// - VITE_API_TARGET(必需): API 及云同步共用的代理目标
|
||||
// - VITE_CLOUD_SYNC_URL(可选): 云同步独立远端地址,未设置时回退到 VITE_API_TARGET
|
||||
// Build 模式下 proxy 配置不生效(无 dev server),仅 dev 模式使用
|
||||
const apiTarget = env.VITE_API_TARGET
|
||||
const cloudSyncTarget = env.VITE_CLOUD_SYNC_URL || apiTarget
|
||||
|
||||
if (!apiTarget) {
|
||||
throw new Error(`[vite.config] 缺少必需的环境变量: VITE_API_TARGET。请检查 .env.${mode} 文件。`)
|
||||
}
|
||||
|
||||
return {
|
||||
plugins: [vue()],
|
||||
build: {
|
||||
@@ -15,16 +32,46 @@ export default defineConfig(({ mode }) => {
|
||||
emptyOutDir: true,
|
||||
},
|
||||
define: {
|
||||
'window.__API_BASE_URL__': JSON.stringify('/api')
|
||||
// 非 MAUI 模式下静态替换 API 基地址;MAUI 模式下由宿主在运行时注入
|
||||
...(mode !== 'maui' ? { 'window.__API_BASE_URL__': JSON.stringify('/api') } : {}),
|
||||
// MAUI 模式标识:用于区分云同步请求的行为
|
||||
'window.__IS_MAUI__': JSON.stringify(mode === 'maui'),
|
||||
},
|
||||
server: {
|
||||
port: 5174,
|
||||
proxy: {
|
||||
// 本地 API 代理到后端
|
||||
'/api': {
|
||||
target: 'http://localhost:5173',
|
||||
changeOrigin: true,
|
||||
secure: false,
|
||||
},
|
||||
target: apiTarget,
|
||||
changeOrigin: true,
|
||||
secure: false,
|
||||
},
|
||||
// 云同步端点代理到远端服务器
|
||||
'/auth': {
|
||||
target: cloudSyncTarget,
|
||||
changeOrigin: true,
|
||||
secure: false,
|
||||
},
|
||||
'/tasks': {
|
||||
target: cloudSyncTarget,
|
||||
changeOrigin: true,
|
||||
secure: false,
|
||||
},
|
||||
'/sync': {
|
||||
target: cloudSyncTarget,
|
||||
changeOrigin: true,
|
||||
secure: false,
|
||||
},
|
||||
'/security': {
|
||||
target: cloudSyncTarget,
|
||||
changeOrigin: true,
|
||||
secure: false,
|
||||
},
|
||||
'/cloud-sync': {
|
||||
target: cloudSyncTarget,
|
||||
changeOrigin: true,
|
||||
secure: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user