UNPKG

@varlet/cli

Version:
28 lines (27 loc) 1.1 kB
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; }