changemaker.lite/admin/vite.config.ts

55 lines
1.8 KiB
TypeScript

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import path from 'path';
// Get domain from environment (fallback to cmlite.org)
const domain = process.env.DOMAIN || 'cmlite.org';
export default defineConfig({
plugins: [react()],
resolve: {
alias: {
'@': path.resolve(__dirname, './src'),
},
},
server: {
port: 3000,
host: '0.0.0.0',
allowedHosts: [
`.${domain}`, // Allow all subdomains of configured domain
'changemaker-v2-admin', // Allow container hostname
'localhost',
'127.0.0.1',
],
proxy: {
'/api': {
// Use env var with fallback: Docker uses container name, local uses localhost
target: process.env.VITE_API_URL || 'http://localhost:4000',
changeOrigin: true,
},
'/media/public': {
// Public media routes: rewrite to /api/public (matches Fastify prefix: '/api')
target: process.env.VITE_MEDIA_API_URL || 'http://localhost:4100',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/media\/public/, '/api/public'),
},
'/media': {
// Media API proxy: other routes (/videos, /reactions) rewrite to /api
target: process.env.VITE_MEDIA_API_URL || 'http://localhost:4100',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/media/, '/api'),
},
'/mkdocs-proxy': {
// Docker: uses VITE_MKDOCS_URL (container networking)
// Local dev: computes from MKDOCS_PORT in .env (dynamic)
// Fallback: defaults to 4003 if neither is set
target: process.env.VITE_MKDOCS_URL ||
`http://localhost:${process.env.MKDOCS_PORT || '4003'}`,
changeOrigin: true,
rewrite: (p) => p.replace(/^\/mkdocs-proxy/, ''),
ws: true,
},
},
},
});