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
This commit is contained in:
@@ -1,69 +1,75 @@
|
|||||||
import path from 'path';
|
import path from 'path';
|
||||||
import { defineConfig, loadEnv } from 'vite';
|
import { defineConfig, loadEnv } from 'vite';
|
||||||
|
import { unifiedConfig } from './config/unified.config';
|
||||||
|
|
||||||
export default defineConfig(({ mode }) => {
|
export default defineConfig(({ mode }) => {
|
||||||
|
// Still load env for backward compatibility and overrides
|
||||||
const env = loadEnv(mode, '.', '');
|
const env = loadEnv(mode, '.', '');
|
||||||
|
|
||||||
|
// Use unified config as the primary source
|
||||||
|
const config = unifiedConfig;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
define: {
|
define: {
|
||||||
// Legacy API key support
|
// Legacy API key support
|
||||||
'process.env.API_KEY': JSON.stringify(env.GEMINI_API_KEY),
|
'process.env.API_KEY': JSON.stringify(env.GEMINI_API_KEY),
|
||||||
'process.env.GEMINI_API_KEY': JSON.stringify(env.GEMINI_API_KEY),
|
'process.env.GEMINI_API_KEY': JSON.stringify(env.GEMINI_API_KEY),
|
||||||
|
|
||||||
// Application configuration
|
// Application configuration from unified config
|
||||||
'import.meta.env.VITE_APP_NAME': JSON.stringify(
|
'import.meta.env.VITE_APP_NAME': JSON.stringify(config.app.name),
|
||||||
env.VITE_APP_NAME || env.APP_NAME || 'RxMinder'
|
'import.meta.env.VITE_APP_VERSION': JSON.stringify(config.app.version),
|
||||||
),
|
'import.meta.env.VITE_BASE_URL': JSON.stringify(config.app.baseUrl),
|
||||||
'import.meta.env.VITE_APP_VERSION': JSON.stringify(
|
|
||||||
env.VITE_APP_VERSION || env.APP_VERSION || '1.0.0'
|
|
||||||
),
|
|
||||||
'import.meta.env.VITE_BASE_URL': JSON.stringify(
|
|
||||||
env.APP_BASE_URL || env.VITE_BASE_URL || 'http://localhost:5173'
|
|
||||||
),
|
|
||||||
|
|
||||||
// Database configuration
|
// Database configuration from unified config
|
||||||
'import.meta.env.VITE_COUCHDB_URL': JSON.stringify(env.VITE_COUCHDB_URL),
|
'import.meta.env.VITE_COUCHDB_URL': JSON.stringify(config.database.url),
|
||||||
'import.meta.env.VITE_COUCHDB_USER': JSON.stringify(
|
'import.meta.env.VITE_COUCHDB_USER': JSON.stringify(
|
||||||
env.VITE_COUCHDB_USER
|
config.database.username
|
||||||
),
|
),
|
||||||
'import.meta.env.VITE_COUCHDB_PASSWORD': JSON.stringify(
|
'import.meta.env.VITE_COUCHDB_PASSWORD': JSON.stringify(
|
||||||
env.VITE_COUCHDB_PASSWORD
|
config.database.password
|
||||||
),
|
),
|
||||||
|
|
||||||
// Email configuration
|
// Email configuration from unified config
|
||||||
'import.meta.env.VITE_MAILGUN_API_KEY': JSON.stringify(
|
'import.meta.env.VITE_MAILGUN_API_KEY': JSON.stringify(
|
||||||
env.VITE_MAILGUN_API_KEY
|
config.email.mailgun?.apiKey || ''
|
||||||
),
|
),
|
||||||
'import.meta.env.VITE_MAILGUN_DOMAIN': JSON.stringify(
|
'import.meta.env.VITE_MAILGUN_DOMAIN': JSON.stringify(
|
||||||
env.VITE_MAILGUN_DOMAIN
|
config.email.mailgun?.domain || ''
|
||||||
),
|
),
|
||||||
'import.meta.env.VITE_MAILGUN_FROM_NAME': JSON.stringify(
|
'import.meta.env.VITE_MAILGUN_FROM_NAME': JSON.stringify(
|
||||||
env.VITE_MAILGUN_FROM_NAME
|
config.email.fromName
|
||||||
),
|
),
|
||||||
'import.meta.env.VITE_MAILGUN_FROM_EMAIL': JSON.stringify(
|
'import.meta.env.VITE_MAILGUN_FROM_EMAIL': JSON.stringify(
|
||||||
env.VITE_MAILGUN_FROM_EMAIL
|
config.email.fromEmail
|
||||||
),
|
),
|
||||||
|
|
||||||
// OAuth configuration
|
// OAuth configuration from unified config
|
||||||
'import.meta.env.VITE_GOOGLE_CLIENT_ID': JSON.stringify(
|
'import.meta.env.VITE_GOOGLE_CLIENT_ID': JSON.stringify(
|
||||||
env.VITE_GOOGLE_CLIENT_ID
|
config.oauth.google?.clientId || ''
|
||||||
),
|
),
|
||||||
'import.meta.env.VITE_GITHUB_CLIENT_ID': JSON.stringify(
|
'import.meta.env.VITE_GITHUB_CLIENT_ID': JSON.stringify(
|
||||||
env.VITE_GITHUB_CLIENT_ID
|
config.oauth.github?.clientId || ''
|
||||||
),
|
),
|
||||||
|
|
||||||
// Feature flags
|
// Feature flags from unified config
|
||||||
'import.meta.env.ENABLE_EMAIL_VERIFICATION': JSON.stringify(
|
'import.meta.env.ENABLE_EMAIL_VERIFICATION': JSON.stringify(
|
||||||
env.ENABLE_EMAIL_VERIFICATION !== 'false'
|
config.features.enableEmailVerification
|
||||||
),
|
),
|
||||||
'import.meta.env.ENABLE_OAUTH': JSON.stringify(
|
'import.meta.env.ENABLE_OAUTH': JSON.stringify(
|
||||||
env.ENABLE_OAUTH !== 'false'
|
config.features.enableOAuth
|
||||||
),
|
),
|
||||||
'import.meta.env.ENABLE_ADMIN_INTERFACE': JSON.stringify(
|
'import.meta.env.ENABLE_ADMIN_INTERFACE': JSON.stringify(
|
||||||
env.ENABLE_ADMIN_INTERFACE !== 'false'
|
config.features.enableAdminInterface
|
||||||
),
|
),
|
||||||
'import.meta.env.DEBUG_MODE': JSON.stringify(
|
'import.meta.env.DEBUG_MODE': JSON.stringify(config.features.debugMode),
|
||||||
env.DEBUG_MODE === 'true' || mode === 'development'
|
|
||||||
|
// 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: {
|
resolve: {
|
||||||
|
|||||||
Reference in New Issue
Block a user