VitePress 侧边栏生成器配置指南
简述
基于多方原因考虑,本站中所有侧边栏均由开发组自行编写的侧边栏生成器生成。并未使用Vitepress提供的侧边栏插件。下文对于侧边栏生成器配置提供了详尽的解析。
结构与原理
侧边栏生成器的入口由index.ts
文件构成,其完整路径为:CrychicDoc/.vitepress/index.ts
。
其代码结构如下:
ts
const dirs = [
"modpack/kubejs"
];
ts
import sidebar from "./utils/sidebarGenerator"
import md from "./utils/mdParser"
import Path from "path";
import fs from "fs";
const dirs = [
"modpack/kubejs"
];
export default function sidebars(lang: string): {} {
let ISidebar = {};
dirs.forEach(dir => {
const generator = new sidebar(`docs/${lang}/${dir}`, true);
ISidebar[`${lang}/${dir}/`] = [generator.sidebar]
})
return ISidebar;
}
function logger(string: string, name: string): void {
fs.writeFileSync(Path.join(__dirname, name), `${string}\n`, { flag: 'w+' });
}
当您需要增加一个新的自动扫描目录时,您应在该数组中添加新的路径字符串。您新增的路径经过扫描会自动生成侧边栏,并在对应的子域名中显示。
示例
modpack/kubejs
所生成的侧边栏将会在https://docs.mihono.cn/<lang>/modpack/kubejs
中出现。
注意
路径字符串不应包含docs/<lang>
目录
在您添加路径之前,请确保您的路径是真实存在的。
文件扫描
目标目录的文件将会自动被生成器扫描,并生成相应的侧边栏,每个文件的frontmatter配置字段详见此处 。
目录扫描
在本站生成器中,目录不会被自动递归扫描,您需要在目录目录上级创建index.md
并对其frontmatter 进行配置,手动指定需要进入并扫描的目录。
解析
index.md
中的frontmatter除了支持常规的文件配置格式,还会额外读取一项名为root
的<Object>
对象,其配置字段及代码声明如下。
代码声明
ts
interface Index {
root: {
title: string,
collapsed?: boolean;
children: SubDir[]
}
}
ts
interface SubDir {
title: string;
path: string;
noScan?: boolean;
collapsed?: boolean;
file?: string;
children?: SubDir[];
}
配置字段 | 用途 | 类型 | 省缺值 |
---|---|---|---|
title | 设置该侧边栏的名称,非必填字段 | string | N/A |
collapsed | 设置该侧边栏默认展开/收缩,非必填字段,留空以禁用展开 | boolean | N/A |
children | 设置该目录下哪些子目录应被递归,在root为必填字段 | SubDir | N/A |
示例
yaml
---
root:
title: example
collapsed: true
children:
- title: subDir a
path: test
collapsed: true
children:
- title: subDir back
path: test
children:
- title: subDir back
path: test
file: README
- title: subDir back
path: test
noScan: true
file: README
---
提示
如果您使用VSCode编辑器参与本站的编撰工作,您可以调用我们预设的代码片段,对于类型为非对象的配置字段,您可以直接输入其名称唤起补全。对于root
对象以及SubDir
对象,您分别可以使用@root
以及@subdir
来唤出相应的片段。
贡献者
页面历史
6f30d01
- Change Index files, Add rules, Improve Nav bar, Make noguide default balue true, Fix Summary Path Error. I died.