- Brand ◢ chisel-wedge favicon (SVG + 32px PNG + 180px apple-touch-icon) - 1200x630 OG share card (Say it. Shape it. + isometric wireframe), rendered from HTML via headless Brave; source in step-service/.render/ - og:/twitter: meta with image, theme-color - vite publicDir=static so assets ship in the build Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
20 lines
612 B
TypeScript
20 lines
612 B
TypeScript
import { defineConfig } from "vite";
|
|
import react from "@vitejs/plugin-react";
|
|
|
|
// Client builds into ./public, which the Worker serves via the ASSETS binding.
|
|
// /api/* is handled by the Worker (see src/worker/index.ts); everything else is
|
|
// the SPA. In dev, `vite` proxies /api to `wrangler dev` on :8787.
|
|
export default defineConfig({
|
|
root: "src/client",
|
|
// Static assets (favicon, share image) copied verbatim into the build output.
|
|
publicDir: "static",
|
|
build: {
|
|
outDir: "../../public",
|
|
emptyOutDir: true,
|
|
},
|
|
server: {
|
|
proxy: {
|
|
"/api": "http://localhost:8787",
|
|
},
|
|
},
|
|
});
|