import { execSync } from "child_process" import fs from "fs" import path from "path" import react from "@vitejs/plugin-react" import { defineConfig } from "vite" // 构建指纹:版本 + commit hash + 构建时间(设置页「关于」展示,排障救命) const pkg = JSON.parse(fs.readFileSync(path.resolve(__dirname, "package.json"), "utf-8")) const gitHash = (() => { try { return execSync("git rev-parse --short HEAD").toString().trim() } catch { return "unknown" } })() const buildTime = new Date().toISOString() const APP_VERSION = `${pkg.version}+${gitHash} (${buildTime.slice(0, 16)})` export default defineConfig({ base: '/', define: { __APP_VERSION__: JSON.stringify(APP_VERSION), }, plugins: [react()], build: { rollupOptions: { output: { manualChunks(id) { if (!id.includes('node_modules')) return; if (id.includes('react') || id.includes('react-router')) return 'vendor-react'; if (id.includes('@codemirror')) return 'vendor-editor'; if (id.includes('@radix-ui')) return 'vendor-ui'; }, }, }, }, server: { port: 5173, strictPort: true, proxy: { '/api': { target: 'http://localhost:9000', changeOrigin: true, }, }, }, resolve: { alias: { "@": path.resolve(__dirname, "./src"), }, }, });