support site config .extends being an array

pull/3137/head
Jacob Hummer 2 years ago committed by GitHub
parent a31e143afa
commit 77a349954c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -84,10 +84,18 @@ const sidebar: DefaultTheme.Config['sidebar'] = {
} }
export default defineConfig({ export default defineConfig({
title: 'Example', extends: [
description: 'An example app using VitePress.', {
title: 'Example',
description: 'An example app using VitePress.'
},
{
themeConfig: {
sidebar
}
}
],
themeConfig: { themeConfig: {
sidebar,
search: { search: {
provider: 'local', provider: 'local',
options: { options: {

@ -180,8 +180,13 @@ async function resolveConfigExtends(
): Promise<UserConfig> { ): Promise<UserConfig> {
const resolved = await (typeof config === 'function' ? config() : config) const resolved = await (typeof config === 'function' ? config() : config)
if (resolved.extends) { if (resolved.extends) {
const base = await resolveConfigExtends(resolved.extends) const extendsRaw = [resolved.extends].flat()
return mergeConfig(base, resolved) const manyBases = await Promise.all(
extendsRaw.map((config) => resolveConfigExtends(config))
)
// or reduceRight() depending on which side gets priority
const singleBase = manyBases.reduce((prev, curr) => mergeConfig(prev, curr))
return mergeConfig(singleBase, resolved)
} }
return resolved return resolved
} }

@ -56,7 +56,7 @@ export interface TransformPageContext {
export interface UserConfig<ThemeConfig = any> export interface UserConfig<ThemeConfig = any>
extends LocaleSpecificConfig<ThemeConfig> { extends LocaleSpecificConfig<ThemeConfig> {
extends?: RawConfigExports<ThemeConfig> extends?: RawConfigExports<ThemeConfig> | RawConfigExports<ThemeConfig>[]
base?: string base?: string
srcDir?: string srcDir?: string

Loading…
Cancel
Save