Skip to content

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来唤出相应的片段。

贡献者

页面历史