gitdataai/vite.config.ts
ZhenYi aaf518a66c feat: add Vite configuration with aliases and proxy
Add path aliases (@/* -> src/*) and development proxy
configuration for API routing.
2026-05-14 21:49:47 +08:00

93 lines
3.2 KiB
TypeScript

import path from "path"
import tailwindcss from "@tailwindcss/vite"
import react from "@vitejs/plugin-react"
import {defineConfig, type Plugin} from "vite"
function tailwindEscapeFix(): Plugin {
return {
name: "tailwind-escape-fix",
enforce: "pre",
async transform(code, id) {
if (id.endsWith(".css")) {
return code.replace(/(\d)::(\d)(px|rem|em|%|vh|vw|ms|s)/g, "$1.$2$3")
}
},
}
}
export default defineConfig({
plugins: [tailwindcss(), tailwindEscapeFix(), react()],
optimizeDeps: {
entries: ["src/**/*.{ts,tsx}"],
},
build: {
rollupOptions: {
output: {
manualChunks(id: string) {
if (id.includes("node_modules")) {
// React + deps that import React — keep together to avoid circular deps
if (id.includes("react-dom") || id.includes("react-router-dom") || id.includes("scheduler") || id.includes("@tanstack/react-query")) {
return "vendor-react";
}
if (id.includes("react-markdown") || id.includes("remark-gfm") || id.includes("rehype-raw") || id.includes("rehype-sanitize")) {
return "vendor-markdown";
}
if (id.includes("lucide-react")) {
return "vendor-lucide";
}
if (id.includes("motion")) {
return "vendor-motion";
}
if (id.includes("recharts")) {
return "vendor-recharts";
}
// Streamdown + diagram deps — keep together to avoid circular deps
if (id.includes("streamdown") || id.includes("@streamdown") || id.includes("cytoscape") || id.includes("d3-") || id.includes("dagre")) {
return "vendor-streamdown";
}
if (id.includes("@tanstack/react-table")) {
return "vendor-table";
}
if (id.includes("radix-ui")) {
return "vendor-radix";
}
}
},
},
},
chunkSizeWarningLimit: 400,
},
resolve: {
alias: {
"@": path.resolve(__dirname, "./src"),
},
dedupe: ["react", "react-dom"],
},
server: {
host: true,
port: 5080,
fs: {
deny: ["**/target/**"],
},
watch: {
ignored: ["**/libs/**", "**/target/**"],
},
hmr: {
host: "localhost",
port: 5080,
protocol: "ws",
},
proxy: {
"/api": {
target: "http://localhost:8080",
changeOrigin: true,
},
"/ws": {
target: "ws://localhost:8080",
changeOrigin: true,
ws: true,
},
},
},
})