Sidebar (docs.json)
Feishu Pages 导出的时候,按照飞书知识库的原始目录结构生成了一个 docs.json
文件,这样我们需要在各种 Static Page Generator 里面使用的时候,可以简单的通过 docs.json
来构建自定义的目录树。
每一种 Static Page Generator 自动构建目录树的方式都不同,比如我已知的:
- mdBook, GitBook - 基于
SUMMARY.md
来生成。 - VitePress - 默认基于
.md
文件的层次结构来整理,支持自定义 Sidebar。 - Docusaurus - 默认基于
.md
文件结构整理,支持自定义 Sidebar。
基本上大部分的工具都支持按目录结构来生成 Sidebar,然而实际情况是它们之间有一定的微小差异。
因此 Feishu Pages 给出了 docs.json
让我们使用的时候,可以手动生成,减少坑。
文件结构
docs.json
是一个 JSON 文件,以层级的方式存储了整个文档的完整树形结构。
Field | Type | Description |
depth | interger | 目录深度,从 0 开始,每一层 +1 |
title | string | 文档标题 |
children | array | 子集文档,内部每个成员与这个表格描述的 Doc 结构一样 |
has_child | bool | 是否包含子集文档,true | false |
meta | object | 见下面的 PageMeta 描述,通过文档内的 PageMeta 生成出来的 |
position | 排列顺序 | 小的在前面(其实 array 的结构已经是原始的顺序了)你可以忽略这个字段。 |
filename | string | Markdown 的文件名 |
node_token | string | 飞书 API 的原始字段 |
parent_node_token | string | 飞书 API 的原始字段 |
obj_token | string | 飞书 API 的原始字段 |
obj_create_time | string | Unix Timestamp 的文档创建时间,飞书 API 原始字段 |
obj_edit_time | string | Unix Timestamp 的文档修改时间,飞书 API 原始字段 |
例如
[
{
// 目录深度
"depth": 0,
// 页面标题
"title": "简体中文",
// _token 结尾的为
"node_token": "PRqjwjB4EiQbiEk5fxVc99BZnzg",
"parent_node_token": "",
"obj_create_time": "1697445178",
"obj_edit_time": "1698232747",
"obj_token": "LmzFdNtLQok47MxMUagc2o9SnXc",
"children": [
{
"depth": 1,
"title": "快速开始",
"node_token": "XpKYwA6oqiGMfFkLVwCcwykunzV",
"parent_node_token": "PRqjwjB4EiQbiEk5fxVc99BZnzg",
"obj_create_time": "1693452885",
"obj_edit_time": "1698229707",
"obj_token": "Fkoed2dB5ofvJbxSmZbcWMBhnQd",
"children": [],
"has_child": false,
"meta": {
"slug": "gettting-started"
},
"slug": "zh-CN/gettting-started",
"position": 0,
"filename": "zh-CN/gettting-started.md"
},
{
"depth": 1,
"title": "支持的内容格式",
"node_token": "Ks7jwPEtJiyUXckawcRcJ68jnvg",
"parent_node_token": "PRqjwjB4EiQbiEk5fxVc99BZnzg",
"obj_create_time": "1695107050",
"obj_edit_time": "1698225722",
"obj_token": "Z1dpdj9Y5o0IEex5fecc529qnwc",
"children": [
// ...
],
"has_child": true,
"meta": {
"slug": "supported-formats"
},
"slug": "zh-CN/supported-formats",
"position": 1,
"filename": "zh-CN/supported-formats.md"
}
]
}
]