diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 69fb283..657ce8a 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -5,9 +5,14 @@ import { import footnote from 'markdown-it-footnote'; import UnoCSS from 'unocss/vite'; import { defineConfig } from 'vitepress'; +import { + GitChangelog, + GitChangelogMarkdownSection, +} from '@nolebase/vitepress-plugin-git-changelog/vite'; import { PROFILE } from './config_profile'; import { MarkdownTransform } from './plugins/markdown_transform'; +import { TypstTagsForNolebase } from './plugins/typst_version_nolebase'; import mirror_link from './plugins/mirror_link'; import TypstRender from './typst_render'; @@ -199,6 +204,14 @@ if ( }, vite: { - plugins: [UnoCSS(), MarkdownTransform()], + plugins: [ + UnoCSS(), + MarkdownTransform(), + TypstTagsForNolebase(), + GitChangelog({ + repoURL: () => 'https://github.com/typst-doc-cn/guide', + }), + GitChangelogMarkdownSection(), + ], }, }); diff --git a/docs/.vitepress/plugins/typst_version_nolebase.ts b/docs/.vitepress/plugins/typst_version_nolebase.ts new file mode 100644 index 0000000..563e031 --- /dev/null +++ b/docs/.vitepress/plugins/typst_version_nolebase.ts @@ -0,0 +1,25 @@ +import type { Plugin } from 'vite'; + +import { TYPST_TAGS_FOR_NOLEBASE } from '../theme/typst_version'; + +export function TypstTagsForNolebase(): Plugin { + const name = 'zhtyp-guide-typst-version'; + const virtualModuleId = `virtual:${name}`; + const resolvedVirtualModuleId = `\0${virtualModuleId}`; + + return { + name, + resolveId(id: string) { + if (id === virtualModuleId) { + return resolvedVirtualModuleId; + } + }, + load(id: string) { + if (id !== resolvedVirtualModuleId) { + return; + } + + return `export default ${JSON.stringify(TYPST_TAGS_FOR_NOLEBASE)};`; + }, + }; +} diff --git a/docs/.vitepress/theme/SeeAlso.vue b/docs/.vitepress/theme/SeeAlso.vue index 33b4fa3..86e7309 100644 --- a/docs/.vitepress/theme/SeeAlso.vue +++ b/docs/.vitepress/theme/SeeAlso.vue @@ -25,7 +25,7 @@ const links = computed(() => {