import { defineConfig } from 'vite'; import { tanstackStart } from '@tanstack/react-start/plugin/vite'; import react from '@vitejs/plugin-react'; import tailwindcss from '@tailwindcss/vite'; import { fileURLToPath, URL } from 'node:url'; // Absolute origin for canonical and Open Graph URLs. Inlined at build time so // the server render and the client agree on it. On Vercel the production domain // is used automatically; VITE_SITE_URL overrides it anywhere. const siteUrl = process.env.VITE_SITE_URL ?? (process.env.VERCEL_PROJECT_PRODUCTION_URL ? `https://${process.env.VERCEL_PROJECT_PRODUCTION_URL}` : 'http://localhost:3000'); export default defineConfig(async ({ command }) => ({ server: { port: 3000 }, plugins: [ // Start must come before the React plugin. tanstackStart(), // Hosting adapter for `vite build`: Nitro packages Start's server for the // host (a Vercel Function when building on Vercel, a Node server in // .output/ elsewhere). Dev never loads it, so `vite dev` — and the // nodesandbox runtime — run plain Vite + TanStack Start + Hono. ...(command === 'build' ? [(await import('nitro/vite')).nitro()] : []), react(), tailwindcss(), ], define: { 'import.meta.env.VITE_SITE_URL': JSON.stringify(siteUrl), }, resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)), }, }, }));