import type { CubeFrontConfig, EnvConfig } from './types';
import { defaultConfig } from './defaultConfig';
import { deepMerge } from '../utils/object';
import { configData, currentEnv } from 'virtual:cube-front-config';
/**
* è§£æžé…ç½®å—符串为对象
* @param configStr é…ç½®å—符串
* @returns é…置对象
*/
function parseConfigString(configStr: string): EnvConfig {
try {
// 使用 Function æž„é€ å™¨å®‰å…¨åœ°è§£æžé…置对象
return new Function('return ' + configStr)();
} catch (error) {
console.warn('è§£æžé…ç½®å—符串失败:', error);
return {};
}
}
/**
* 获å–当å‰é…ç½®
* 从虚拟模å—导入é…置数æ®å¹¶è¿›è¡Œåˆå¹¶å¤„ç†
* @returns 当å‰é…ç½®
*/
export function getConfig(): CubeFrontConfig {
let result = defaultConfig;
// 1. å…ˆåˆå¹¶é€šç”¨é…ç½® config.ts
if (configData.general) {
const generalConfig = parseConfigString(configData.general);
result = deepMerge(result, generalConfig) as CubeFrontConfig;
}
// 2. å†åˆå¹¶çŽ¯å¢ƒç‰¹å®šé…ç½® config.${env}.ts 或 ${env}.ts
if (configData[currentEnv]) {
const envConfig = parseConfigString(configData[currentEnv]);
result = deepMerge(result, envConfig) as CubeFrontConfig;
}
return result;
}
/**
* åˆå¹¶é…ç½®
* @param customConfig 自定义é…ç½®
* @returns åˆå¹¶åŽçš„é…ç½®
*/
export function mergeConfig(customConfig: EnvConfig): CubeFrontConfig {
const baseConfig = getConfig();
return deepMerge(baseConfig, customConfig) as CubeFrontConfig;
}
// 导出é…置类型
export type {
CubeFrontConfig,
EnvConfig,
BaseConfig, // 替代 AppConfig
AuthConfig, // 替代 LoginConfig
RequestConfig, // 替代 RequestConfig
UIConfig, // 包å«åŽŸ LayoutConfig å’Œ ThemeConfig
} from './types';
// 导出默认é…ç½®
export { defaultConfig } from './defaultConfig';
|