import { defineConfig } from 'vite'; import metadata from './public/oauth-client-metadata.json' with { type: 'json' }; const SERVER_HOST = '127.0.0.1'; const SERVER_PORT = 3030; export default defineConfig({ root: '.', publicDir: 'public', base: './', build: { outDir: 'dist', rollupOptions: { input: { main: 'index.html', view: 'view.html', 'view-dir': 'view/index.html' } } }, server: { host: SERVER_HOST, port: SERVER_PORT }, appType: 'mpa', plugins: [ // Inject OAuth environment variables { name: 'oauth-env', config(_conf, { command }) { if (command === 'build') { process.env.VITE_OAUTH_CLIENT_ID = metadata.client_id; process.env.VITE_OAUTH_REDIRECT_URI = metadata.redirect_uris[0]; } else { // Dev mode: use localhost client ID format const redirectUri = `http://${SERVER_HOST}:${SERVER_PORT}/view.html`; const clientId = `http://localhost` + `?redirect_uri=${encodeURIComponent(redirectUri)}` + `&scope=${encodeURIComponent(metadata.scope)}`; process.env.VITE_OAUTH_CLIENT_ID = clientId; process.env.VITE_OAUTH_REDIRECT_URI = redirectUri; } process.env.VITE_OAUTH_SCOPE = metadata.scope; } }, // Rewrite /view/ to /view.html for dev server { name: 'rewrite-view', configureServer(server) { server.middlewares.use((req, res, next) => { if (req.url.startsWith('/view') && !req.url.includes('.html')) { // /view/ or /view/?query -> /view.html or /view.html?query req.url = req.url.replace(/^\/view\/?/, '/view.html'); } next(); }); } } ] });