import path from "node:path"; import { fileURLToPath } from "node:url"; import react from "@vitejs/plugin-react"; import { defineConfig } from "vite"; import sourceIdentifierPlugin from "vite-plugin-source-identifier"; const rootDir = fileURLToPath(new URL(".", import.meta.url)); // Tailwind 4 emits CSS cascade layers, which require Chrome 99+. Chrome 100 // is therefore the practical lower bound for this Win7 legacy build. const LEGACY_CHROME = 100 << 16; export default defineConfig({ plugins: [sourceIdentifierPlugin(), react()], css: { // Also used by the production CSS minifier. Development CSS is handled // by the matching PostCSS compatibility pass in postcss.config.js. lightningcss: { targets: { chrome: LEGACY_CHROME, }, }, }, resolve: { alias: [ { find: "@/env", replacement: path.resolve(rootDir, "src/env.ts"), }, { find: "next/navigation", replacement: path.resolve(rootDir, "src/shims/next-navigation.ts"), }, { find: "next/link", replacement: path.resolve(rootDir, "src/shims/next-link.tsx"), }, { find: "@vite", replacement: path.resolve(rootDir, "src"), }, { find: "@", replacement: path.resolve(rootDir, "src"), }, ], }, // Keep the current portable-file default, while allowing container builds to // emit absolute asset URLs. The latter is required for BrowserRouter pages // behind Nginx: a request to /page/... must still load /assets/... rather // than /page/assets/.... base: process.env.VITE_ASSET_BASE ?? "./", build: { cssMinify: "lightningcss", target: "chrome100", }, server: { // 与 scripts/env.sh FRONTEND_PORT=5174、圆桌 wujie 嵌入文档一致。 port: 5173, // 无界宿主跨域 fetch 子应用静态资源时,Vite 需回显请求的 Origin。 cors: true, }, });