import { defineConfig } from "vite"; import react from "@vitejs/plugin-react"; import tailwindcss from "@tailwindcss/vite"; import { fileURLToPath, URL } from "node:url"; const host = process.env.TAURI_DEV_HOST; // https://vitejs.dev/config/ export default defineConfig(async () => ({ plugins: [react(), tailwindcss()], // Path resolution resolve: { alias: { "@": fileURLToPath(new URL("./src", import.meta.url)), }, }, // Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build` // // 1. prevent vite from obscuring rust errors clearScreen: false, // 2. tauri expects a fixed port, fail if that port is not available server: { port: 1420, strictPort: true, host: host || false, hmr: host ? { protocol: "ws", host, port: 1421, } : undefined, watch: { // 3. tell vite to ignore watching `src-tauri` ignored: ["**/src-tauri/**"], }, }, // Build configuration for code splitting build: { // Increase chunk size warning limit to 2000 KB chunkSizeWarningLimit: 2000, rollupOptions: { output: { // Manual chunks for better code splitting manualChunks: { // Vendor chunks 'react-vendor': ['react', 'react-dom'], 'ui-vendor': ['@radix-ui/react-dialog', '@radix-ui/react-dropdown-menu', '@radix-ui/react-select', '@radix-ui/react-tabs', '@radix-ui/react-tooltip', '@radix-ui/react-switch', '@radix-ui/react-popover'], 'editor-vendor': ['@uiw/react-md-editor'], 'syntax-vendor': ['react-syntax-highlighter'], // Tauri and other utilities 'tauri': ['@tauri-apps/api', '@tauri-apps/plugin-dialog', '@tauri-apps/plugin-shell'], 'utils': ['date-fns', 'clsx', 'tailwind-merge'], }, }, }, }, }));