import { defineConfig, mergeConfig } from "vite"; import { createBuildConfig } from "./vite.config.common.mts"; import { loadAppConfig } from "./vite.config.utils.mts"; export default defineConfig(async ({ mode }) => { console.log(`[VITE WEB CONFIG] Web config called with mode: ${mode}`); console.log(`[VITE WEB CONFIG] NODE_ENV: ${process.env.NODE_ENV}`); const baseConfig = await createBuildConfig('web'); console.log(`[VITE WEB CONFIG] Base config loaded, plugins count: ${baseConfig.plugins?.length || 0}`); const appConfig = await loadAppConfig(); // Environment-specific configuration based on mode const getEnvironmentConfig = (mode: string) => { switch (mode) { case 'production': return { // Production optimizations build: { minify: 'terser', sourcemap: false, rollupOptions: { output: { manualChunks: { vendor: ['vue', 'vue-router', 'pinia'], utils: ['luxon', 'ramda', 'zod'], crypto: ['@ethersproject/wallet', '@ethersproject/hdnode', 'ethereum-cryptography'], sql: ['@jlongster/sql.js', 'absurd-sql'] } } } }, define: { __DEV__: false, __TEST__: false, __PROD__: true } }; case 'test': return { // Test environment configuration build: { minify: false, sourcemap: true, rollupOptions: { output: { manualChunks: undefined } } }, define: { __DEV__: false, __TEST__: true, __PROD__: false } }; default: // development return { // Development configuration build: { minify: false, sourcemap: true, rollupOptions: { output: { manualChunks: undefined } } }, define: { __DEV__: true, __TEST__: false, __PROD__: false } }; } }; const environmentConfig = getEnvironmentConfig(mode); console.log(`[VITE WEB CONFIG] Environment config for mode ${mode}:`, Object.keys(environmentConfig)); const finalConfig = mergeConfig(baseConfig, { ...environmentConfig, // Ensure source maps are enabled for development and test modes // This affects both dev server and build output sourcemap: mode === 'development' || mode === 'test', // Server configuration inherited from base config // CORS headers removed to allow images from any domain plugins: [] }); console.log(`[VITE WEB CONFIG] Final web config plugins:`, finalConfig.plugins?.map(p => typeof p === 'object' && p && 'name' in p ? p.name : 'unnamed').filter(Boolean)); console.log(`[VITE WEB CONFIG] Final web config build settings:`, { minify: finalConfig.build?.minify, sourcemap: finalConfig.sourcemap, mode: finalConfig.mode }); return finalConfig; });