Files
LynkedUpPro_CRM/vite.config.js
T

48 lines
1.6 KiB
JavaScript

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
/**
* Dev-only stub for /api/* requests.
*
* The files in /api are Vercel serverless functions — they run only on Vercel,
* not in the local Vite dev server. When the frontend polls an endpoint like
* /api/hail-status during local dev, Vite would otherwise resolve that URL to
* the on-disk api/*.js file and push it through its module-transform pipeline,
* which crashes on server-only imports such as `@vercel/kv`.
*
* This middleware intercepts /api/* before Vite transforms anything and returns
* a 503. Every frontend hook that hits these endpoints already degrades
* gracefully on a failed fetch (falls back to mock data / inactive storm state),
* so the app behaves correctly in local dev — just without the live API.
*/
const devApiStub = {
name: 'dev-api-stub',
apply: 'serve',
configureServer(server) {
server.middlewares.use((req, res, next) => {
if (req.url && req.url.startsWith('/api/')) {
res.statusCode = 503
res.setHeader('Content-Type', 'application/json')
res.end(JSON.stringify({
error: 'API routes run only on Vercel and are unavailable in local dev.',
}))
return
}
next()
})
},
}
export default defineConfig({
plugins: [react(), devApiStub],
server: {
// Don't watch or serve /api — those are Vercel serverless functions, not frontend code
watch: { ignored: ['**/api/**'] },
fs: { deny: ['api'] },
},
optimizeDeps: {
// Don't pre-bundle serverless function files
exclude: ['api'],
},
})