You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
2.7 KiB
99 lines
2.7 KiB
import { defineConfig, mergeConfig } from "vite";
|
|
import { createBuildConfig } from "./vite.config.common.mts";
|
|
import { loadAppConfig } from "./vite.config.utils.mts";
|
|
|
|
export default defineConfig(async ({ mode }) => {
|
|
const baseConfig = await createBuildConfig('web');
|
|
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);
|
|
|
|
return 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: [],
|
|
// Worker configuration for SQL worker
|
|
worker: {
|
|
format: 'es',
|
|
plugins: () => []
|
|
},
|
|
// Optimize dependencies for SQL worker
|
|
optimizeDeps: {
|
|
include: [
|
|
'@jlongster/sql.js',
|
|
'absurd-sql',
|
|
'absurd-sql/dist/indexeddb-main-thread',
|
|
'absurd-sql/dist/indexeddb-backend'
|
|
]
|
|
}
|
|
});
|
|
});
|
|
|