fix(server): auto import config.json (#11255)

This commit is contained in:
liuyi
2025-03-28 14:12:56 +08:00
committed by GitHub
parent 08ee84e697
commit e22f66f1cc
8 changed files with 70 additions and 42 deletions
@@ -1,4 +1,7 @@
import { once, set } from 'lodash-es';
import { existsSync, readFileSync } from 'node:fs';
import { join } from 'node:path';
import { merge, once, set } from 'lodash-es';
import { z } from 'zod';
import { type EnvConfigType, parseEnvValue } from './env';
@@ -205,6 +208,34 @@ export function defineModuleConfig<T extends keyof AppConfigSchema>(
};
}
function readConfigJSONOverrides() {
if (existsSync(join(env.projectRoot, 'config.json'))) {
try {
const config = JSON.parse(
readFileSync(join(env.projectRoot, 'config.json'), 'utf-8')
) as AppConfig;
const overrides = {};
Object.entries(config).forEach(([key, value]) => {
if (key === '$schema') {
return;
}
Object.entries(value).forEach(([k, v]) => {
set(overrides, `${key}.${k}`, v);
});
});
return overrides;
} catch (e) {
console.error('Invalid json config file', e);
}
}
return {};
}
export function getDefaultConfig(): AppConfigSchema {
const config: Record<string, any> = {};
const envs = process.env;
@@ -235,5 +266,9 @@ export function getDefaultConfig(): AppConfigSchema {
config[module] = modulizedConfig;
}
const fileOverrides = readConfigJSONOverrides();
merge(config, fileOverrides);
return config as AppConfigSchema;
}