Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
59 lines
1.7 KiB
TypeScript
59 lines
1.7 KiB
TypeScript
import { defineConfig, loadEnv } from 'vite'
|
|
import vue from '@vitejs/plugin-vue'
|
|
import path from 'path'
|
|
import fs from 'fs'
|
|
|
|
export default defineConfig(({ mode }) => {
|
|
const env = loadEnv(mode, __dirname, '')
|
|
|
|
function parseDotenvFile(filePath: string) {
|
|
try {
|
|
if (!fs.existsSync(filePath)) return {}
|
|
const text = fs.readFileSync(filePath, 'utf-8')
|
|
const result: Record<string, string> = {}
|
|
for (const rawLine of text.split(/\r?\n/)) {
|
|
const line = rawLine.trim()
|
|
if (!line || line.startsWith('#')) continue
|
|
const eq = line.indexOf('=')
|
|
if (eq <= 0) continue
|
|
const key = line.slice(0, eq).trim()
|
|
let value = line.slice(eq + 1).trim()
|
|
if ((value.startsWith('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'"))) {
|
|
value = value.slice(1, -1)
|
|
}
|
|
result[key] = value
|
|
}
|
|
return result
|
|
} catch {
|
|
return {}
|
|
}
|
|
}
|
|
|
|
// Vite only loads env files under `frontend/` by default.
|
|
// Many Jarvis setups keep HOST/PORT in repo root `.env`, so we read it explicitly as a fallback.
|
|
const rootEnvPath = path.resolve(__dirname, '../.env')
|
|
const rootEnv = parseDotenvFile(rootEnvPath)
|
|
const rootHost = (rootEnv.HOST || '127.0.0.1').trim()
|
|
const rootPort = (rootEnv.PORT || '').trim()
|
|
const rootApi = (rootEnv.VITE_API_URL || (rootPort ? `http://${rootHost}:${rootPort}` : '')).trim()
|
|
|
|
const apiTarget = env.VITE_API_URL || rootApi || 'http://localhost:8000'
|
|
|
|
return {
|
|
plugins: [vue()],
|
|
resolve: {
|
|
alias: {
|
|
'@': path.resolve(__dirname, './src'),
|
|
},
|
|
},
|
|
server: {
|
|
proxy: {
|
|
'/api': {
|
|
target: apiTarget,
|
|
changeOrigin: true,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
})
|