minidocs

介绍

minidocs 帮你用 Astro 搭建文档站。它不提供现成的站点和主题:内容放在 Astro 的内容集合里,页面由你自己写,minidocs 提供写这些页面要用到的数据、组件和样式。

和主题式框架的区别

主题式的文档框架交付一个完整的站点,你通过配置项定制它。配置项覆盖不到的需求,就要去替换主题里的组件。

在 minidocs 里,页面布局从一开始就是你的代码。侧边栏放在哪、显示什么、要不要加一个徽标,都直接写在布局文件里,不需要框架事先留好位置。

minidocs 提供什么

  • 数据:从内容集合算出文档树、当前页面的位置、上一页和下一页
  • 组件:侧边栏、本页目录、翻页、提示框、搜索对话框这些 Astro 组件。折叠、窄屏下的抽屉、目录高亮这些交互已经包含在内
  • 样式:一套可选的默认样式,你写的样式总是优先
  • 内容处理:正文里直接链接到 .md 和 .mdx 文件,用 :::tip 写提示框,为每个页面生成 Markdown 版本和 llms.txt

每一部分都可以单独使用。某个组件不合适,就换成自己写的 HTML;不需要默认样式,就不引入它。

数据经过你的代码

组件不会自己去读取文档树。你从文档树里取出数据,再通过属性传给组件。所以 frontmatter 里的任何字段都可以直接用在侧边栏里,比如给页面加一个徽标:

<Sidebar.Link {...nav.of(node)}>
  {node.label}
  {node.page?.entry.data.badge && <span class="badge">{node.page.entry.data.badge}</span>}
</Sidebar.Link>

这是侧边栏里的一项:node 是文档树里的一个页面,nav.of(node) 给出它的链接和是否是当前页面。badge 只要在集合的 schema 里声明了,就有完整的类型。

接下来,快速开始从零搭出一个文档站。

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