@razen-core/zenweb
Version:
A minimalist TypeScript framework for building reactive web applications with no virtual DOM
70 lines • 1.64 kB
JavaScript
/**
* ZenWeb Configuration
* Load and validate configuration
*/
import * as fs from 'fs';
import * as path from 'path';
import { logger } from './logger.js';
const defaultConfig = {
entry: 'src/index.ts',
output: 'dist/bundle.js',
minify: true,
sourceMaps: true,
port: 3000,
hotReload: true,
routing: {
mode: 'history',
base: '/',
fileBasedRouting: true,
pagesDir: 'src/pages',
scrollBehavior: 'smooth',
trailingSlash: false
},
middleware: {
global: [],
routes: {}
},
build: {
splitting: true,
chunkSize: 500,
publicPath: '/',
analyze: false
}
};
/**
* Load ZenWeb configuration
*/
export async function loadConfig() {
const configPath = path.join(process.cwd(), 'zenweb.config.js');
if (!fs.existsSync(configPath)) {
logger.info('Using default configuration');
return defaultConfig;
}
try {
const configModule = await import(configPath);
const userConfig = configModule.default || configModule;
return {
...defaultConfig,
...userConfig
};
}
catch (error) {
logger.error('Error loading config', error);
return defaultConfig;
}
}
/**
* Validate configuration
*/
export function validateConfig(config) {
if (!config.entry) {
logger.error('Config error: entry is required');
return false;
}
if (!config.output) {
logger.error('Config error: output is required');
return false;
}
return true;
}
//# sourceMappingURL=config.js.map