feat(build): provide `siteConfig` in `transformPageData` context (#2163)

pull/2167/head
John Campion Jr 3 years ago committed by Divyansh Singh
parent 4c23003189
commit 3714741b40

@ -552,21 +552,31 @@ export default {
### transformPageData
- Type: `(pageData: PageData) => Awaitable<Partial<PageData> | { [key: string]: any } | void>`
- Type: `(pageData: PageData, ctx: TransformPageContext) => Awaitable<Partial<PageData> | { [key: string]: any } | void>`
`transformPageData` is a hook to transform the `pageData` of each page. You can directly mutate `pageData` or return changed values which will be merged into PageData.
::: warning
Don't mutate anything inside the `ctx`.
:::
```ts
export default {
async transformPageData(pageData) {
async transformPageData(pageData, { siteConfig }) {
pageData.contributors = await getPageContributors(pageData.relativePath)
}
// or return data to be merged
async transformPageData(pageData) {
async transformPageData(pageData, { siteConfig }) {
return {
contributors: await getPageContributors(pageData.relativePath)
}
}
}
```
```ts
interface TransformPageContext {
siteConfig: SiteConfig
}
```

@ -145,10 +145,15 @@ export interface UserConfig<ThemeConfig = any>
* PageData transform hook: runs when rendering markdown to vue
*/
transformPageData?: (
pageData: PageData
pageData: PageData,
ctx: TransformPageContext
) => Awaitable<Partial<PageData> | { [key: string]: any } | void>
}
export interface TransformPageContext {
siteConfig: SiteConfig
}
export interface TransformContext {
page: string
siteConfig: SiteConfig

@ -191,7 +191,9 @@ export async function createMarkdownToVueRenderFn(
}
if (siteConfig?.transformPageData) {
const dataToMerge = await siteConfig.transformPageData(pageData)
const dataToMerge = await siteConfig.transformPageData(pageData, {
siteConfig
})
if (dataToMerge) {
pageData = {
...pageData,

Loading…
Cancel
Save