import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; import fs from 'fs'; const httpsEnv = (process.env.HTTPS || '').toLowerCase(); const useHttps = httpsEnv === 'true' || httpsEnv === '1'; import tsconfigPaths from 'vite-tsconfig-paths' // If custom cert paths are provided via env, use them; otherwise let Vite handle a self-signed cert when true. const httpsOption = useHttps ? (process.env.VITE_HTTPS_KEY && process.env.VITE_HTTPS_CERT ? { key: fs.readFileSync(process.env.VITE_HTTPS_KEY), cert: fs.readFileSync(process.env.VITE_HTTPS_CERT) } : true) : false; export default defineConfig({ // Base public path when served in dev or production. Allow overriding // via VITE_API_BASE (e.g. /ketr.ketran) so assets and manifest paths work. base: '/', plugins: [react(), tsconfigPaths()], build: { outDir: 'build', }, server: { host: process.env.HOST || '0.0.0.0', port: Number(process.env.PORT) || 3000, https: httpsOption, proxy: { '/ketr.ketran/api': { target: 'http://peddlers-server:8930/ketr.ketran', changeOrigin: true, rewrite: (path) => path.replace(/^\/ketr.ketran/, '') } }, // HMR options: allow overriding host/port/protocol from env so external // browsers (accessing via a different hostname) can connect to the dev // server's websocket. See https://vite.dev/config/server-options.html#server-hmr hmr: { port: process.env.VITE_HMR_PORT || 3001, host: process.env.VITE_HMR_HOST || 'localhost', protocol: process.env.VITE_HMR_PROTOCOL || 'ws' } } });