import { defineConfig, type Plugin } from "vite"; import vue from "@vitejs/plugin-vue"; import tailwindcss from "@tailwindcss/vite"; import { resolve } from "path"; /** Strip crossorigin attribute from HTML — WKWebView + Tauri custom protocol compatibility. */ function stripCrossOrigin(): Plugin { return { name: "strip-crossorigin", transformIndexHtml(html) { return html.replace(/ crossorigin/g, ""); }, }; } export default defineConfig({ plugins: [vue(), tailwindcss(), stripCrossOrigin()], resolve: { alias: { "@": resolve(__dirname, "src"), }, }, // Tauri expects a fixed port and does not use Vite's host broadcasting server: { port: 5173, strictPort: true, host: false, }, // Suppress Vite's own clear-screen so Tauri's stdout stays readable clearScreen: false, build: { // Tauri supports ES2021 on all desktop targets target: ["es2021", "chrome100", "safari13"], minify: !process.env.TAURI_DEBUG ? "esbuild" : false, sourcemap: !!process.env.TAURI_DEBUG, // Disable crossorigin attribute on script/link tags — WKWebView on // macOS may reject CORS-mode requests for Tauri's custom tauri:// // protocol in dynamically created child WebviewWindows. crossOriginLoading: false, }, });