From 4995fb909cf171c5db5b4aa47ec4b27c4068c028 Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Tue, 15 Apr 2025 22:38:39 +0530 Subject: [PATCH] update opengraph stuff in docs, export resolveSiteDataByRoute --- docs/.vitepress/config.ts | 28 +++++++++++++++++++++++----- docs/en/index.md | 3 --- docs/es/index.md | 3 --- docs/fa/index.md | 3 --- docs/ko/index.md | 3 --- docs/pt/index.md | 3 --- docs/ru/index.md | 3 --- docs/zh/index.md | 3 --- src/node/config.ts | 1 + src/shared/shared.ts | 3 ++- 10 files changed, 26 insertions(+), 27 deletions(-) diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index bb45c4c2..575d114d 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -1,4 +1,8 @@ -import { defineConfig } from 'vitepress' +import { + defineConfig, + resolveSiteDataByRoute, + type HeadConfig +} from 'vitepress' import { groupIconMdPlugin, groupIconVitePlugin, @@ -6,6 +10,8 @@ import { } from 'vitepress-plugin-group-icons' import llmstxt from 'vitepress-plugin-llms' +const prod = !!process.env.NETLIFY + export default defineConfig({ title: 'VitePress', @@ -72,8 +78,6 @@ export default defineConfig({ ['link', { rel: 'icon', type: 'image/png', href: '/vitepress-logo-mini.png' }], ['meta', { name: 'theme-color', content: '#5f67ee' }], ['meta', { property: 'og:type', content: 'website' }], - ['meta', { property: 'og:locale', content: 'en' }], - ['meta', { property: 'og:title', content: 'VitePress | Vite & Vue Powered Static Site Generator' }], ['meta', { property: 'og:site_name', content: 'VitePress' }], ['meta', { property: 'og:image', content: 'https://vitepress.dev/vitepress-og.jpg' }], ['meta', { property: 'og:url', content: 'https://vitepress.dev/' }], @@ -120,11 +124,25 @@ export default defineConfig({ firebase: 'logos:firebase' } }), - !!process.env.NETLIFY && + prod && llmstxt({ workDir: 'en', ignoreFiles: ['index.md'] }) ] - } + }, + + transformPageData: prod + ? (pageData, ctx) => { + const site = resolveSiteDataByRoute( + ctx.siteConfig.site, + pageData.relativePath + ) + const title = `${pageData.title || site.title} | ${pageData.description || site.description}` + ;((pageData.frontmatter.head ??= []) as HeadConfig[]).push( + ['meta', { property: 'og:locale', content: site.lang }], + ['meta', { property: 'og:title', content: title }] + ) + } + : undefined }) diff --git a/docs/en/index.md b/docs/en/index.md index c91ce953..61a2b003 100644 --- a/docs/en/index.md +++ b/docs/en/index.md @@ -1,9 +1,6 @@ --- layout: home -title: VitePress -titleTemplate: Vite & Vue Powered Static Site Generator - hero: name: VitePress text: Vite & Vue Powered Static Site Generator diff --git a/docs/es/index.md b/docs/es/index.md index 04a4c68f..24b5034c 100644 --- a/docs/es/index.md +++ b/docs/es/index.md @@ -1,9 +1,6 @@ --- layout: home -title: VitePress -titleTemplate: Generador de Sitios Estáticos desarrollado con Vite y Vue - hero: name: VitePress text: Generador de Sitios Estáticos Vite y Vue diff --git a/docs/fa/index.md b/docs/fa/index.md index cd6552ba..8fa79bd3 100644 --- a/docs/fa/index.md +++ b/docs/fa/index.md @@ -1,9 +1,6 @@ --- layout: home -title: ویت‌پرس -titleTemplate: Vite & Vue Powered Static Site Generator - hero: name: ویت‌پرس text: سازنده سایت‌های ایستا به کمک Vite و Vue diff --git a/docs/ko/index.md b/docs/ko/index.md index 3ddaa07d..ae7df4c8 100644 --- a/docs/ko/index.md +++ b/docs/ko/index.md @@ -1,9 +1,6 @@ --- layout: home -title: VitePress -titleTemplate: Vite & Vue 기반 정적 사이트 생성기 - hero: name: VitePress text: Vite & Vue 기반 정적 사이트 생성기 diff --git a/docs/pt/index.md b/docs/pt/index.md index 71fff26b..67cab365 100644 --- a/docs/pt/index.md +++ b/docs/pt/index.md @@ -1,9 +1,6 @@ --- layout: home -title: VitePress -titleTemplate: Gerador de Site Estático desenvolvido com Vite & Vue - hero: name: VitePress text: Gerador de Site Estático Vite & Vue diff --git a/docs/ru/index.md b/docs/ru/index.md index 77f2072a..e5bc7732 100644 --- a/docs/ru/index.md +++ b/docs/ru/index.md @@ -1,9 +1,6 @@ --- layout: home -title: VitePress -titleTemplate: Генератор статических сайтов на основе Vite и Vue - hero: name: VitePress text: Генератор статических сайтов на основе Vite и Vue diff --git a/docs/zh/index.md b/docs/zh/index.md index e07f9136..7beeb998 100644 --- a/docs/zh/index.md +++ b/docs/zh/index.md @@ -1,9 +1,6 @@ --- layout: home -title: VitePress -titleTemplate: 由 Vite 和 Vue 驱动的静态站点生成器 - hero: name: VitePress text: 由 Vite 和 Vue 驱动的静态站点生成器 diff --git a/src/node/config.ts b/src/node/config.ts index 164c4978..959e39bd 100644 --- a/src/node/config.ts +++ b/src/node/config.ts @@ -26,6 +26,7 @@ import { import type { RawConfigExports, SiteConfig, UserConfig } from './siteConfig' export { resolvePages } from './plugins/dynamicRoutesPlugin' +export { resolveSiteDataByRoute } from './shared' export * from './siteConfig' const debug = _debug('vitepress:config') diff --git a/src/shared/shared.ts b/src/shared/shared.ts index a372a9b1..3caca9a9 100644 --- a/src/shared/shared.ts +++ b/src/shared/shared.ts @@ -123,7 +123,7 @@ export function resolveSiteDataByRoute( head: mergeHead( siteData.head ?? [], localeConfig.head ?? [], - ...additionalConfigs.map((data) => data?.head ?? []).reverse() + ...additionalConfigs.map((data) => data.head ?? []).reverse() ) } as SiteData @@ -317,6 +317,7 @@ export function stackView(..._layers: Partial[]): T { const allKeysArray = [...allKeys] return new Proxy({} as T, { + // TODO: optimize for performance, this is a hot path get(_, prop) { if (prop === UnpackStackView) return layers return stackView(