Folio 把每个 Markdown 文件解析成一个 FolioDoc。
type FolioDoc = {
id: string
path: string
sourcePath: string
type: "doc" | "article" | "project" | "page" | string
title: string
description: string
group: string
collection?: string
section?: string
order: number
date?: string
publishedAt?: string
updatedAt?: string
dateSources?: FolioDateSources
tags: string[]
status?: string
cover?: string
body: string
headings: FolioHeading[]
data: Record<string, unknown>
}publishedAt、updatedAt 与 dateSources 是 dev 源码中的日期契约,尚未包含在已发布的 0.1.1 中;发布历史与状态见迁移状态。
data 是扩展边界#
核心认识的稳定字段会进入顶层属性。
核心不认识的 Frontmatter 字段不会丢失,而是保留在 data 中。因此 consumer 可以增加作者、业务状态、外部 ID、展示模式等字段,不需要扩展 Folio 核心类型。
文件到 route#
guide/content-model.md → /guide/content-model
guide/index.md → /guideFrontmatter 的 path 可以覆盖 URL;Vite plugin 的 route(sourcePath, doc) 还能做 consumer 级兼容映射。
类型推断#
未声明 type 时:
blogs/* → article
projects/* → project
其他 → docheadings#
Folio 同时提取 Markdown 与原始 HTML 中的 h2–h4,并生成稳定、去重的锚点。