import * as path from "path"; import react from "@vitejs/plugin-react"; import tailwindcss from "@tailwindcss/vite"; import { defineConfig } from "vite"; import electron from "vite-plugin-electron/simple"; import { TanStackRouterVite } from "@tanstack/router-plugin/vite"; import { fileURLToPath } from "url"; const __dirname = path.dirname(fileURLToPath(import.meta.url)); export default defineConfig(({ command }) => { // Only skip electron plugin during dev server in CI (no display available for Electron) // Always include it during build - we need dist-electron/main.js for electron-builder const skipElectron = command === "serve" && (process.env.CI === "true" || process.env.VITE_SKIP_ELECTRON === "true"); return { plugins: [ // Only include electron plugin when not in CI/headless dev mode ...(skipElectron ? [] : [ electron({ main: { entry: "src/main.ts", vite: { build: { outDir: "dist-electron", rollupOptions: { external: ["electron"], }, }, }, }, preload: { input: "src/preload.ts", vite: { build: { outDir: "dist-electron", rollupOptions: { external: ["electron"], }, }, }, }, }), ]), TanStackRouterVite({ target: "react", autoCodeSplitting: true, routesDirectory: "./src/routes", generatedRouteTree: "./src/routeTree.gen.ts", }), tailwindcss(), react(), ], resolve: { alias: { "@": path.resolve(__dirname, "./src"), }, }, server: { port: parseInt(process.env.TEST_PORT || "3007", 10), }, build: { outDir: "dist", }, }; });