diff --git a/docs/config/app-configs.md b/docs/config/app-configs.md index 34d147f2..89f9e378 100644 --- a/docs/config/app-configs.md +++ b/docs/config/app-configs.md @@ -246,3 +246,59 @@ export default { cleanUrls: 'with-subfolders' } ``` + +## Build Hooks + +VitePress build hooks allow you to add new functionality and behaviors to your website: + +- Sitemap +- Search Indexing +- PWA + +### transformHtml + +- Type: `( code: string, id: string, ctx: TransformContext ) => Awaitable` + +`transformHtml` is a build hook to transform the content of each page before saving to disk (SSG). + +::: warning +Modifying the html content may cause hydration problems in runtime. +::: + +```ts +import { defineConfig } from 'vitepress' + +export default defineConfig({ + /* other vitepress options */ + async transformHtml(code, id, context) { + } +}) +``` + +```ts +interface TransformContext { + siteConfig: SiteConfig + siteData: SiteData + pageData: PageData + title: string + description: string + head: HeadConfig[] + content: string +} +``` + +### buildEnd + +- Type: `(siteConfig: SiteConfig) => Awaitable` + +`buildEnd` is a build CLI hook, it will run after build (SSG) finish but before VitePress CLI process exits. + +```ts +import { defineConfig } from 'vitepress' + +export default defineConfig({ + /* other vitepress options */ + async buildEnd(siteConfig) { + } +}) +``` diff --git a/src/node/config.ts b/src/node/config.ts index 11849089..d00499fa 100644 --- a/src/node/config.ts +++ b/src/node/config.ts @@ -99,18 +99,20 @@ export interface UserConfig { transformHtml?: ( code: string, id: string, - ctx: { - siteConfig: SiteConfig - siteData: SiteData - pageData: PageData - title: string - description: string - head: HeadConfig[] - content: string - } + ctx: TransformContext ) => Awaitable } +export interface TransformContext { + siteConfig: SiteConfig + siteData: SiteData + pageData: PageData + title: string + description: string + head: HeadConfig[] + content: string +} + export type RawConfigExports = | Awaitable> | (() => Awaitable>)