@varlet/cli
Version:
cli of varlet
28 lines (27 loc) • 1.1 kB
JavaScript
import { pathToFileURL } from 'url';
import { isArray, mergeWith } from '@varlet/shared';
import fse from 'fs-extra';
import { SITE_CONFIG, VARLET_CONFIG } from '../shared/constant.js';
import { outputFileSyncOnChange } from '../shared/fsUtils.js';
const { pathExistsSync, statSync } = fse;
export function defineConfig(config) {
return config;
}
export function mergeStrategy(_, srcValue, key) {
const keys = ['features', 'members', 'versions', 'themes', '_cf'];
if (keys.includes(key) && isArray(srcValue)) {
return srcValue;
}
}
export async function getVarletConfig(emit = false) {
const defaultConfig = (await import('./varlet.default.config.js')).default;
const config = pathExistsSync(VARLET_CONFIG)
? (await import(`${pathToFileURL(VARLET_CONFIG).href}?_t=${statSync(VARLET_CONFIG).mtimeMs}`)).default
: {};
const mergedConfig = mergeWith(defaultConfig, config, mergeStrategy);
if (emit) {
const source = JSON.stringify(mergedConfig, null, 2);
outputFileSyncOnChange(SITE_CONFIG, source);
}
return mergedConfig;
}