Files
rxminder/vite.config.ts
William Valentin 7ab6d0a486 feat: integrate Vite build with unified configuration
- Replace scattered environment variable definitions with unified config
- Use unifiedConfig as primary source for build-time variables
- Maintain backward compatibility with legacy environment variables
- Add proper TypeScript typing for all environment variables
- Include new environment flags: IS_PRODUCTION, IS_DEVELOPMENT
- Simplify configuration management in build process
2025-09-08 09:43:41 -07:00

82 lines
2.8 KiB
TypeScript

import path from 'path';
import { defineConfig, loadEnv } from 'vite';
import { unifiedConfig } from './config/unified.config';
export default defineConfig(({ mode }) => {
// Still load env for backward compatibility and overrides
const env = loadEnv(mode, '.', '');
// Use unified config as the primary source
const config = unifiedConfig;
return {
define: {
// Legacy API key support
'process.env.API_KEY': JSON.stringify(env.GEMINI_API_KEY),
'process.env.GEMINI_API_KEY': JSON.stringify(env.GEMINI_API_KEY),
// Application configuration from unified config
'import.meta.env.VITE_APP_NAME': JSON.stringify(config.app.name),
'import.meta.env.VITE_APP_VERSION': JSON.stringify(config.app.version),
'import.meta.env.VITE_BASE_URL': JSON.stringify(config.app.baseUrl),
// Database configuration from unified config
'import.meta.env.VITE_COUCHDB_URL': JSON.stringify(config.database.url),
'import.meta.env.VITE_COUCHDB_USER': JSON.stringify(
config.database.username
),
'import.meta.env.VITE_COUCHDB_PASSWORD': JSON.stringify(
config.database.password
),
// Email configuration from unified config
'import.meta.env.VITE_MAILGUN_API_KEY': JSON.stringify(
config.email.mailgun?.apiKey || ''
),
'import.meta.env.VITE_MAILGUN_DOMAIN': JSON.stringify(
config.email.mailgun?.domain || ''
),
'import.meta.env.VITE_MAILGUN_FROM_NAME': JSON.stringify(
config.email.fromName
),
'import.meta.env.VITE_MAILGUN_FROM_EMAIL': JSON.stringify(
config.email.fromEmail
),
// OAuth configuration from unified config
'import.meta.env.VITE_GOOGLE_CLIENT_ID': JSON.stringify(
config.oauth.google?.clientId || ''
),
'import.meta.env.VITE_GITHUB_CLIENT_ID': JSON.stringify(
config.oauth.github?.clientId || ''
),
// Feature flags from unified config
'import.meta.env.ENABLE_EMAIL_VERIFICATION': JSON.stringify(
config.features.enableEmailVerification
),
'import.meta.env.ENABLE_OAUTH': JSON.stringify(
config.features.enableOAuth
),
'import.meta.env.ENABLE_ADMIN_INTERFACE': JSON.stringify(
config.features.enableAdminInterface
),
'import.meta.env.DEBUG_MODE': JSON.stringify(config.features.debugMode),
// Environment info
'import.meta.env.NODE_ENV': JSON.stringify(config.app.environment),
'import.meta.env.IS_PRODUCTION': JSON.stringify(
config.app.environment === 'production'
),
'import.meta.env.IS_DEVELOPMENT': JSON.stringify(
config.app.environment === 'development'
),
},
resolve: {
alias: {
'@': path.resolve(__dirname, '.'),
},
},
};
});