Skip to content

Commit c5e2e4d

Browse files
zhangyx1998brc-dd
andauthored
feat: support distributed config files (#4660)
--------- Co-authored-by: Divyansh Singh <40380293+brc-dd@users.noreply.github.com>
1 parent 0b70397 commit c5e2e4d

File tree

23 files changed

+449
-179
lines changed

23 files changed

+449
-179
lines changed

docs/.vitepress/config/shared.ts renamed to docs/.vitepress/config.ts

Lines changed: 41 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
import { defineConfig } from 'vitepress'
1+
import {
2+
defineConfig,
3+
resolveSiteDataByRoute,
4+
type HeadConfig
5+
} from 'vitepress'
26
import {
37
groupIconMdPlugin,
48
groupIconVitePlugin,
59
localIconLoader
610
} from 'vitepress-plugin-group-icons'
711
import llmstxt from 'vitepress-plugin-llms'
8-
import { search as esSearch } from './es'
9-
import { search as faSearch } from './fa'
10-
import { search as koSearch } from './ko'
11-
import { search as ptSearch } from './pt'
12-
import { search as ruSearch } from './ru'
13-
import { search as zhSearch } from './zh'
1412

15-
export const shared = defineConfig({
13+
const prod = !!process.env.NETLIFY
14+
15+
export default defineConfig({
1616
title: 'VitePress',
1717

1818
rewrites: {
@@ -78,8 +78,6 @@ export const shared = defineConfig({
7878
['link', { rel: 'icon', type: 'image/png', href: '/vitepress-logo-mini.png' }],
7979
['meta', { name: 'theme-color', content: '#5f67ee' }],
8080
['meta', { property: 'og:type', content: 'website' }],
81-
['meta', { property: 'og:locale', content: 'en' }],
82-
['meta', { property: 'og:title', content: 'VitePress | Vite & Vue Powered Static Site Generator' }],
8381
['meta', { property: 'og:site_name', content: 'VitePress' }],
8482
['meta', { property: 'og:image', content: 'https://vitepress.dev/vitepress-og.jpg' }],
8583
['meta', { property: 'og:url', content: 'https://vitepress.dev/' }],
@@ -98,35 +96,53 @@ export const shared = defineConfig({
9896
options: {
9997
appId: '8J64VVRP8K',
10098
apiKey: '52f578a92b88ad6abde815aae2b0ad7c',
101-
indexName: 'vitepress',
102-
locales: {
103-
...zhSearch,
104-
...ptSearch,
105-
...ruSearch,
106-
...esSearch,
107-
...koSearch,
108-
...faSearch
109-
}
99+
indexName: 'vitepress'
110100
}
111101
},
112102

113103
carbonAds: { code: 'CEBDT27Y', placement: 'vuejsorg' }
114104
},
105+
106+
locales: {
107+
root: { label: 'English' },
108+
zh: { label: '简体中文' },
109+
pt: { label: 'Português' },
110+
ru: { label: 'Русский' },
111+
es: { label: 'Español' },
112+
ko: { label: '한국어' },
113+
fa: { label: 'فارسی' }
114+
},
115+
115116
vite: {
116117
plugins: [
117118
groupIconVitePlugin({
118119
customIcon: {
119120
vitepress: localIconLoader(
120121
import.meta.url,
121-
'../../public/vitepress-logo-mini.svg'
122+
'../public/vitepress-logo-mini.svg'
122123
),
123124
firebase: 'logos:firebase'
124125
}
125126
}),
126-
llmstxt({
127-
workDir: 'en',
128-
ignoreFiles: ['index.md']
129-
})
127+
prod &&
128+
llmstxt({
129+
workDir: 'en',
130+
ignoreFiles: ['index.md']
131+
})
130132
]
131-
}
133+
},
134+
135+
transformPageData: prod
136+
? (pageData, ctx) => {
137+
const site = resolveSiteDataByRoute(
138+
ctx.siteConfig.site,
139+
pageData.relativePath
140+
)
141+
const title = `${pageData.title || site.title} | ${pageData.description || site.description}`
142+
;((pageData.frontmatter.head ??= []) as HeadConfig[]).push(
143+
['meta', { property: 'og:locale', content: site.lang }],
144+
['meta', { property: 'og:title', content: title }]
145+
)
146+
}
147+
: undefined
132148
})

docs/.vitepress/config/index.ts

Lines changed: 0 additions & 22 deletions
This file was deleted.

docs/.vitepress/config/en.ts renamed to docs/config.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { createRequire } from 'module'
2-
import { defineConfig, type DefaultTheme } from 'vitepress'
2+
import { defineAdditionalConfig, type DefaultTheme } from 'vitepress'
33

44
const require = createRequire(import.meta.url)
55
const pkg = require('vitepress/package.json')
66

7-
export const en = defineConfig({
7+
export default defineAdditionalConfig({
88
lang: 'en-US',
99
description: 'Vite & Vue powered static site generator.',
1010

docs/en/index.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
---
22
layout: home
33

4-
title: VitePress
5-
titleTemplate: Vite & Vue Powered Static Site Generator
6-
74
hero:
85
name: VitePress
96
text: Vite & Vue Powered Static Site Generator

docs/.vitepress/config/es.ts renamed to docs/es/config.ts

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
import { createRequire } from 'module'
2-
import { defineConfig, type DefaultTheme } from 'vitepress'
2+
import { defineAdditionalConfig, type DefaultTheme } from 'vitepress'
33

44
const require = createRequire(import.meta.url)
55
const pkg = require('vitepress/package.json')
66

7-
export const es = defineConfig({
7+
export default defineAdditionalConfig({
88
lang: 'es-CO',
99
description: 'Generador de Sitios Estaticos desarrollado con Vite y Vue.',
1010

1111
themeConfig: {
1212
nav: nav(),
1313

14+
search: { options: searchOptions() },
15+
1416
sidebar: {
1517
'/es/guide/': { base: '/es/guide/', items: sidebarGuide() },
1618
'/es/reference/': { base: '/es/reference/', items: sidebarReference() }
@@ -36,11 +38,15 @@ export const es = defineConfig({
3638
},
3739

3840
lastUpdated: {
39-
text: 'Actualizado en',
40-
formatOptions: {
41-
dateStyle: 'short',
42-
timeStyle: 'medium'
43-
}
41+
text: 'Actualizado en'
42+
},
43+
44+
notFound: {
45+
title: 'PÁGINA NO ENCONTRADA',
46+
quote:
47+
'Pero si no cambias de dirección y sigues buscando, podrías terminar donde te diriges.',
48+
linkLabel: 'ir a inicio',
49+
linkText: 'Llévame a casa'
4450
},
4551

4652
langMenuLabel: 'Cambiar Idioma',
@@ -170,8 +176,8 @@ function sidebarReference(): DefaultTheme.SidebarItem[] {
170176
]
171177
}
172178

173-
export const search: DefaultTheme.AlgoliaSearchOptions['locales'] = {
174-
es: {
179+
function searchOptions(): Partial<DefaultTheme.AlgoliaSearchOptions> {
180+
return {
175181
placeholder: 'Buscar documentos',
176182
translations: {
177183
button: {

docs/es/index.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
---
22
layout: home
33

4-
title: VitePress
5-
titleTemplate: Generador de Sitios Estáticos desarrollado con Vite y Vue
6-
74
hero:
85
name: VitePress
96
text: Generador de Sitios Estáticos Vite y Vue

docs/.vitepress/config/fa.ts renamed to docs/fa/config.ts

Lines changed: 18 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,19 @@
11
import { createRequire } from 'module'
2-
import { defineConfig, type DefaultTheme } from 'vitepress'
2+
import { defineAdditionalConfig, type DefaultTheme } from 'vitepress'
33

44
const require = createRequire(import.meta.url)
55
const pkg = require('vitepress/package.json')
66

7-
export const fa = defineConfig({
8-
title: 'ویت‌پرس',
7+
export default defineAdditionalConfig({
98
lang: 'fa-IR',
10-
description: 'Vite & Vue powered static site generator.',
9+
description: 'ژنراتور استاتیک وب‌سایت با Vite و Vue',
1110
dir: 'rtl',
12-
markdown: {
13-
container: {
14-
tipLabel: 'نکته',
15-
warningLabel: 'هشدار',
16-
dangerLabel: 'خطر',
17-
infoLabel: 'اطلاعات',
18-
detailsLabel: 'جزئیات'
19-
}
20-
},
11+
2112
themeConfig: {
2213
nav: nav(),
14+
15+
search: { options: searchOptions() },
16+
2317
sidebar: {
2418
'/fa/guide/': { base: '/fa/guide/', items: sidebarGuide() },
2519
'/fa/reference/': { base: '/fa/reference/', items: sidebarReference() }
@@ -45,11 +39,15 @@ export const fa = defineConfig({
4539
},
4640

4741
lastUpdated: {
48-
text: 'آخرین به‌روزرسانی‌',
49-
formatOptions: {
50-
dateStyle: 'short',
51-
timeStyle: 'medium'
52-
}
42+
text: 'آخرین به‌روزرسانی‌'
43+
},
44+
45+
notFound: {
46+
title: 'صفحه پیدا نشد',
47+
quote:
48+
'اما اگر جهت خود را تغییر ندهید و همچنان به جستجو ادامه دهید، ممکن است در نهایت به جایی برسید که در حال رفتن به آن هستید.',
49+
linkLabel: 'برو به خانه',
50+
linkText: 'من را به خانه ببر'
5351
},
5452

5553
langMenuLabel: 'تغییر زبان',
@@ -58,14 +56,6 @@ export const fa = defineConfig({
5856
darkModeSwitchLabel: 'تم تاریک',
5957
lightModeSwitchTitle: 'رفتن به حالت روشن',
6058
darkModeSwitchTitle: 'رفتن به حالت تاریک',
61-
notFound: {
62-
linkLabel: 'بازگشت به خانه',
63-
linkText: 'بازگشت به خانه',
64-
title: 'صفحه مورد نظر یافت نشد',
65-
code: '۴۰۴',
66-
quote:
67-
'اما اگر جهت خود را تغییر ندهید و اگر ادامه دهید به دنبال چیزی که دنبال می‌کنید، ممکن است در نهایت به جایی که در حال رفتن به سمتش هستید، برسید.'
68-
},
6959
siteTitle: 'ویت‌پرس'
7060
}
7161
})
@@ -181,8 +171,8 @@ function sidebarReference(): DefaultTheme.SidebarItem[] {
181171
]
182172
}
183173

184-
export const search: DefaultTheme.AlgoliaSearchOptions['locales'] = {
185-
fa: {
174+
function searchOptions(): Partial<DefaultTheme.AlgoliaSearchOptions> {
175+
return {
186176
placeholder: 'جستجوی مستندات',
187177
translations: {
188178
button: {

docs/fa/index.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
---
22
layout: home
33

4-
title: ویت‌پرس
5-
titleTemplate: Vite & Vue Powered Static Site Generator
6-
74
hero:
85
name: ویت‌پرس
96
text: سازنده سایت‌های ایستا به کمک Vite و Vue

docs/.vitepress/config/ko.ts renamed to docs/ko/config.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
import { createRequire } from 'module'
2-
import { defineConfig, type DefaultTheme } from 'vitepress'
2+
import { defineAdditionalConfig, type DefaultTheme } from 'vitepress'
33

44
const require = createRequire(import.meta.url)
55
const pkg = require('vitepress/package.json')
66

7-
export const ko = defineConfig({
7+
export default defineAdditionalConfig({
88
lang: 'ko-KR',
99
description: 'Vite 및 Vue 기반 정적 사이트 생성기.',
1010

1111
themeConfig: {
1212
nav: nav(),
1313

14+
search: { options: searchOptions() },
15+
1416
sidebar: {
1517
'/ko/guide/': { base: '/ko/guide/', items: sidebarGuide() },
1618
'/ko/reference/': { base: '/ko/reference/', items: sidebarReference() }
@@ -39,6 +41,14 @@ export const ko = defineConfig({
3941
text: '업데이트 날짜'
4042
},
4143

44+
notFound: {
45+
title: '페이지를 찾을 수 없습니다',
46+
quote:
47+
'방향을 바꾸지 않고 계속 찾다 보면 결국 당신이 가고 있는 곳에 도달할 수도 있습니다.',
48+
linkLabel: '홈으로 가기',
49+
linkText: '집으로 데려가줘'
50+
},
51+
4252
langMenuLabel: '언어 변경',
4353
returnToTopLabel: '맨 위로 돌아가기',
4454
sidebarMenuLabel: '사이드바 메뉴',
@@ -208,8 +218,8 @@ function sidebarReference(): DefaultTheme.SidebarItem[] {
208218
]
209219
}
210220

211-
export const search: DefaultTheme.AlgoliaSearchOptions['locales'] = {
212-
ko: {
221+
function searchOptions(): Partial<DefaultTheme.AlgoliaSearchOptions> {
222+
return {
213223
placeholder: '문서 검색',
214224
translations: {
215225
button: {

docs/ko/index.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
---
22
layout: home
33

4-
title: VitePress
5-
titleTemplate: Vite & Vue 기반 정적 사이트 생성기
6-
74
hero:
85
name: VitePress
96
text: Vite & Vue 기반 정적 사이트 생성기

docs/lunaria.config.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
},
77
"files": [
88
{
9-
"location": ".vitepress/config/{en,zh,pt,ru,es,ko,fa}.ts",
10-
"pattern": ".vitepress/config/@lang.ts",
9+
"location": "**/config.ts",
10+
"pattern": "@lang/@path",
1111
"type": "universal"
1212
},
1313
{

0 commit comments

Comments
 (0)