Docusaurus是否支持全局可用的站点数据寄存器?
如何在Docusaurus中实现类似Jekyll register API的稳定链接功能
核心结论
Docusaurus目前没有原生的全局可访问数据寄存器(对应Jekyll的site.data、context.registers这类哈希结构),你提到的社区需求确实尚未进入开发阶段。
针对稳定链接需求的替代方案
你的核心需求是通过ID生成不受路径/标题变化影响的链接,以下是几种可行的实现方式:
1. 自定义插件+全局数据注入
编写自定义Docusaurus插件,在构建生命周期中收集页面/对象的ID与路径映射:
- 在插件的
contentLoaded阶段,遍历所有文档/页面数据,提取frontmatter中定义的ID(比如--- id: doc-123 ---)和对应的页面路径、标题 - 将映射数据存入插件的
globalData,或通过siteConfig.customFields暴露 - 在MDX文档或自定义组件中,通过
useDocusaurusContext获取全局数据,根据ID生成链接
示例插件核心代码片段:
module.exports = function (context, options) { return { name: 'id-link-plugin', async contentLoaded({ content, actions }) { const { setGlobalData } = actions; // 收集docs的ID-路径映射 const idMap = content.docs.map(doc => ({ id: doc.frontMatter.id, path: doc.path, title: doc.frontMatter.title })).filter(item => item.id); setGlobalData({ idMap }); } }; };
在MDX中使用:
import { useDocusaurusContext } from '@docusaurus/core'; function LinkById({ id }) { const { siteConfig, globalData } = useDocusaurusContext(); const target = globalData['id-link-plugin'].idMap.find(item => item.id === id); if (!target) return <span>Invalid ID</span>; return <a href={target.path}>{target.title}</a>; } <LinkById id="doc-123" />
2. 自定义MDX链接组件
直接封装一个MDX组件,利用Docusaurus内置的文档数据实现ID匹配:
- 借助
@docusaurus/plugin-content-docs提供的useDocs钩子,获取所有文档元数据 - 在组件内部根据传入的ID匹配对应的文档,生成链接
示例组件:
import { useDocs } from '@docusaurus/plugin-content-docs/client'; export default function LinkById({ id, children }) { const { docs } = useDocs(); const doc = docs.find(d => d.frontMatter.id === id); if (!doc) { return <span className="text-red-500">Unknown document ID: {id}</span>; } return <a href={doc.path}>{children || doc.title}</a>; }
之后在MDX中直接引入使用即可:
<LinkById id="doc-123">查看文档</LinkById>
3. 预生成ID映射文件
通过脚本在构建前扫描所有文档,生成静态的ID-路径映射文件:
- 写Node.js脚本遍历
docs目录,提取每个文档的ID和路径,生成id-map.json并存入static目录 - 在MDX或组件中直接导入该JSON文件,根据ID查找路径生成链接
补充说明
如果需要更复杂的全局数据传递场景,Docusaurus的插件系统支持通过pluginContext在插件间共享数据,或利用globalData实现跨插件的数据访问,虽然不是Jekyll那样的全局寄存器,但可以满足大部分数据共享需求。
内容的提问来源于stack exchange,提问作者Рауль Каримов
相关产品推荐
相关产品推荐

