import path from "node:path"; import { fileURLToPath } from "node:url"; import { defineConfig } from "vite"; const here = path.dirname(fileURLToPath(import.meta.url)); function normalizeBase(input: string): string { const trimmed = input.trim(); if (!trimmed) { return "/"; } if (trimmed === "./") { return "./"; } if (trimmed.endsWith("/")) { return trimmed; } return `${trimmed}/`; } export default defineConfig(() => { const envBase = process.env.OPENCLAW_CONTROL_UI_BASE_PATH?.trim(); const base = envBase ? normalizeBase(envBase) : "./"; return { base, publicDir: path.resolve(here, "public"), optimizeDeps: { include: ["lit/directives/repeat.js"], }, build: { outDir: path.resolve(here, "../dist/control-ui"), emptyOutDir: true, sourcemap: true, // Keep CI/onboard logs clean; current control UI chunking is intentionally above 500 kB. chunkSizeWarningLimit: 1024, }, server: { host: true, port: 5173, strictPort: true, }, }; });