minor tweaks

pull/4660/head
Divyansh Singh 5 months ago
parent 27de822a77
commit e73dce3650

@ -18,7 +18,6 @@ import {
VP_SOURCE_KEY, VP_SOURCE_KEY,
slash, slash,
type AdditionalConfig, type AdditionalConfig,
type AdditionalConfigDict,
type Awaitable, type Awaitable,
type HeadConfig, type HeadConfig,
type SiteData type SiteData
@ -170,15 +169,11 @@ export async function resolveConfig(
} }
const supportedConfigExtensions = ['js', 'ts', 'mjs', 'mts'] const supportedConfigExtensions = ['js', 'ts', 'mjs', 'mts']
const additionalConfigRE = /(?:^|\/|\\)config\.m?[jt]s$/
const additionalConfigGlob = `**/config.{js,mjs,ts,mts}`
export function isAdditionalConfigFile(path: string) { export function isAdditionalConfigFile(path: string) {
const filename_to_check = path.split('/').pop() ?? '' return additionalConfigRE.test(path)
for (const filename of supportedConfigExtensions.map((e) => `config.${e}`)) {
if (filename_to_check === filename) {
return true
}
}
return false
} }
/** /**
@ -197,38 +192,50 @@ async function gatherAdditionalConfig(
root: string, root: string,
command: 'serve' | 'build', command: 'serve' | 'build',
mode: string, mode: string,
srcDir: string = '.' srcDir: string = '.',
): Promise<[AdditionalConfigDict, string[][]]> { srcExclude: string[] = []
const pattern = `**/config.{${supportedConfigExtensions.join(',')}}` ) {
const candidates = await glob(pattern, { //
const candidates = await glob(additionalConfigGlob, {
cwd: path.resolve(root, srcDir), cwd: path.resolve(root, srcDir),
dot: false, // conveniently ignores .vitepress/* dot: false, // conveniently ignores .vitepress/*
ignore: ['**/node_modules/**', '**/.git/**'] ignore: ['**/node_modules/**', ...srcExclude],
expandDirectories: false
}) })
const deps: string[][] = [] const deps: string[][] = []
const exports = await Promise.all( const exports = await Promise.all(
candidates.map(async (file) => { candidates.map(async (file) => {
const id = '/' + dirname(slash(file)) const id = '/' + dirname(slash(file))
const configExports = await loadConfigFromFile( const configExports = await loadConfigFromFile(
{ command, mode }, { command, mode },
normalizePath(path.resolve(root, srcDir, file)), normalizePath(path.resolve(root, srcDir, file)),
root root
).catch(console.error) // Skip additionalConfig file if it fails to load ).catch(console.error) // Skip additionalConfig file if it fails to load
if (!configExports) { if (!configExports) {
debug(`Failed to load additional config from ${file}`) debug(`Failed to load additional config from ${file}`)
return [id, undefined] return
} }
deps.push( deps.push(
configExports.dependencies.map((file) => configExports.dependencies.map((file) =>
normalizePath(path.resolve(file)) normalizePath(path.resolve(file))
) )
) )
if (mode === 'development')
(configExports.config as any)[VP_SOURCE_KEY] = '/' + slash(file) if (mode === 'development') {
return [id, configExports.config as AdditionalConfig] ;(configExports.config as any)[VP_SOURCE_KEY] = '/' + slash(file)
}
return [id, configExports.config as AdditionalConfig] as const
}) })
) )
return [Object.fromEntries(exports.filter(([id, config]) => config)), deps]
return [Object.fromEntries(exports.filter((e) => e != null)), deps] as const
} }
export async function resolveUserConfig( export async function resolveUserConfig(
@ -265,7 +272,8 @@ export async function resolveUserConfig(
root, root,
command, command,
mode, mode,
userConfig.srcDir userConfig.srcDir,
userConfig.srcExclude
) )
userConfig.additionalConfig = additionalConfig userConfig.additionalConfig = additionalConfig
configDeps = configDeps.concat(...additionalDeps) configDeps = configDeps.concat(...additionalDeps)

Loading…
Cancel
Save