44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
import fs from 'node:fs';
|
|
import path from 'node:path';
|
|
import { fileURLToPath } from 'node:url';
|
|
import { defineConfig } from 'vite';
|
|
import react from '@vitejs/plugin-react';
|
|
|
|
const DIR = path.dirname(fileURLToPath(import.meta.url));
|
|
const ROOT = path.resolve(DIR, '../..');
|
|
|
|
function readApiReadToken(): string | undefined {
|
|
if (process.env.API_READ_TOKEN) return process.env.API_READ_TOKEN;
|
|
const p = path.join(ROOT, 'tokens', 'read.json');
|
|
if (!fs.existsSync(p)) return undefined;
|
|
try {
|
|
const raw = fs.readFileSync(p, 'utf8');
|
|
const json = JSON.parse(raw) as { token?: string };
|
|
return json?.token ? String(json.token) : undefined;
|
|
} catch {
|
|
return undefined;
|
|
}
|
|
}
|
|
|
|
const apiReadToken = readApiReadToken();
|
|
|
|
export default defineConfig({
|
|
plugins: [react()],
|
|
server: {
|
|
port: 5173,
|
|
strictPort: true,
|
|
proxy: {
|
|
'/api': {
|
|
target: process.env.API_PROXY_TARGET || 'http://localhost:8787',
|
|
changeOrigin: true,
|
|
rewrite: (p) => p.replace(/^\/api/, ''),
|
|
configure: (proxy) => {
|
|
proxy.on('proxyReq', (proxyReq) => {
|
|
if (apiReadToken) proxyReq.setHeader('Authorization', `Bearer ${apiReadToken}`);
|
|
});
|
|
},
|
|
},
|
|
},
|
|
},
|
|
});
|