import { TanStackRouterVite } from "@tanstack/router-plugin/vite"; import react from "@vitejs/plugin-react-swc"; import { defineConfig, loadEnv, PluginOption } from "vite"; import { nodePolyfills } from "vite-plugin-node-polyfills"; import topLevelAwait from "vite-plugin-top-level-await"; import wasm from "vite-plugin-wasm"; import tsconfigPaths from "vite-tsconfig-paths"; const virtualRouteFileChangeReloadPlugin: PluginOption = { name: "watch-config-restart", configureServer(server) { server.watcher.add("./src/routes.ts"); server.watcher.on("change", (path) => { if (path.endsWith("src/routes.ts")) { console.log("Virtual route changed"); server.restart(); } }); } }; // https://vite.dev/config/ export default defineConfig(({ mode }) => { const env = loadEnv(mode, process.cwd()); const allowedHosts = env.VITE_ALLOWED_HOSTS?.split(",") ?? []; const version = ( env.INFISICAL_PLATFORM_VERSION || env.VITE_INFISICAL_PLATFORM_VERSION || "0.0.1" ).replaceAll(".", "-"); return { server: { allowedHosts, host: true, port: 3000 // proxy: { // "/api": { // target: "http://localhost:8080", // changeOrigin: true, // secure: false, // ws: true // } // } }, build: { rollupOptions: { output: { entryFileNames: `assets/[name]-${version}-[hash].js`, chunkFileNames: `assets/[name]-${version}-[hash].js`, assetFileNames: `assets/[name]-${version}-[hash].[ext]` } } }, experimental: { renderBuiltUrl(filename, { hostType }) { if (hostType === "js") { return { runtime: `window.__toCdnUrl(${JSON.stringify(filename)})` }; } return { relative: true }; } }, plugins: [ tsconfigPaths(), nodePolyfills({ globals: { Buffer: true } }), wasm(), topLevelAwait(), TanStackRouterVite({ virtualRouteConfig: "./src/routes.ts" }), react(), virtualRouteFileChangeReloadPlugin ] }; });