/** * Vite 构建配置 * * 集成 TanStack Start (SSR) + Nitro (服务端) + Tailwind CSS + React Compiler。 * * 特性: * - Bun 运行时优化 (nitro preset: 'bun') * - 静态资源内联 (serveStatic: 'inline') * - React Compiler 自动优化 (无需手动 memo) * - 端口默认 13098 */ import tailwindcss from '@tailwindcss/vite' import { devtools as tanstackDevtools } from '@tanstack/devtools-vite' import { tanstackStart } from '@tanstack/react-start/plugin/vite' import react from '@vitejs/plugin-react' import { nitro } from 'nitro/vite' import { defineConfig, loadEnv } from 'vite' import tsconfigPaths from 'vite-tsconfig-paths' // ============================================================================ // 项目配置 (集中管理) // ============================================================================ /** 加载 .env 文件中的环境变量 */ const envVars = loadEnv('development', process.cwd(), '') /** 开发服务器端口 (从环境变量读取,默认 13098) */ const DEV_PORT = 13098 export default defineConfig({ // 禁止清屏,方便与 Tauri 开发工具共用终端 clearScreen: false, build: { // 使用 esbuild 进行 CSS 压缩 // 避免 lightningcss 处理第三方 CSS 时的兼容性问题 cssMinify: 'esbuild', }, plugins: [ // TanStack 开发工具 tanstackDevtools(), // Nitro 服务端框架 (Bun 运行时) nitro({ preset: 'bun', serveStatic: 'inline', }), // TypeScript 路径别名 (@/* -> src/*) tsconfigPaths(), // Tailwind CSS v4 tailwindcss(), // TanStack Start SSR 框架 tanstackStart(), // React + Babel (启用 React Compiler) react({ babel: { plugins: ['babel-plugin-react-compiler'], }, }), ], server: { port: DEV_PORT, // 如果端口被占用则报错,而不是自动切换端口 strictPort: false, watch: { // 忽略 Tauri 源码目录,避免不必要的重编译 ignored: ['**/src-tauri/**'], }, }, })