minidocs

运行时函数

以下函数都从 @minidocs/astro/runtime 导入。多语言站点和单语言站点的差别写在每个函数下面。

页面

listPages(entries)

返回集合里所有要生成的页面。entries 来自 getCollection。每个页面有:

字段 含义
id 页面 id
entry 集合里的条目
href 页面的地址
params 页面路由的参数。单语言站点是 { slug },多语言站点是 { locale, slug }
markdownHref Markdown 版本的地址
markdownParams Markdown 路由的参数。单语言站点是 { path },多语言站点是 { locale, path }

多语言站点上,每种语言的每个页面各有一项,包括通过 fallback 显示的页面,还多几个字段:

字段 含义
locale 页面显示在哪种语言下
contentLocale 内容实际的语言,只有 fallback 的页面和 locale 不同
isFallback 是否显示的是另一种语言的内容
alternates { locale, href }[],页面存在的所有语言,包括当前语言

toHref(collection, id, locale?)

返回页面的地址,带上 base 和 Astro 配置决定的末尾斜杠。id 按 collection 检查类型。多语言站点必须传 locale。

toLocaleParam(locale)

返回 [...locale] 路由参数的值,给不来自集合的页面用。默认语言不带语言段时返回 undefined。

文档树

defineTree(entries, build)

用 build 回调定义文档树,返回节点数组。多语言站点对每种语言执行一次 build,返回按语言索引的对象。

build 收到 { page, group, dir, link },多语言站点还有 locale:

函数 产出
page(id, children?) 一个页面节点。id 在这种语言里不存在时报错
group(label, children) 一个分组节点
dir(path, { compare? }) 目录里的页面和子目录,不含目录自己的 index。目录里没有页面时报错
link(label, href) 一个外部链接节点

节点有 label、children,页面节点有 page(其中 page.entry 是集合里的条目),外部链接有 href。没有页面、链接和子节点的分组会被去掉。

返回 { of(node) }。of(node) 返回:

字段 含义
href 页面或外部链接的地址,分组是 undefined
current 是不是当前页面。同一个页面出现多次时,只有第一次算
open 当前页面是不是这个节点本身或在它下面

neighbors(nodes, id)

返回 { prev, next },按文档树的顺序找出上一个和下一个页面节点,没有时是 undefined。

findPath(nodes, id)

返回从第一层到当前页面的节点数组,找不到时是空数组。

tocTree(headings, { depth? })

把 render() 返回的 headings 整理成树,每个节点有 depth、slug、text 和 children。depth 是保留的标题层级范围,默认 [2, 3]。

Markdown 和 llms.txt

toMarkdown(page, { renderers? })

把页面的正文转成 Markdown,不带标题。page 是 listPages 返回的页面,或者节点的 page。正文里有其他框架的组件时,用 renderers 传入它们的渲染器。

isMarkdown(Astro)

组件是否正在为 Markdown 版本渲染。

toLlmsTxt(nodes, { title, describe? })

从文档树生成 llms.txt。title 是文件的标题,describe(entry) 返回页面的描述,index 页面的描述同时作为文件的简介。可以把几个集合的树拼在一起传入。

toLlmsFullTxt(nodes, { renderers? })

把树里所有页面的 Markdown 按顺序拼成一个文件。

本页目录
搜索范围
输入关键词开始搜索