介绍
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 里声明了,就有完整的类型。
接下来,快速开始从零搭出一个文档站。