TS 类型
ts
import type { SiteConfig } from 'vitepress'
export interface UserConfig {
vitepress: SiteConfig
}
export interface Options {
/**
* 页面的目录, 相对于项目根目录
*
* default: vitepress.srcDir || ./
*/
srcDir?: string
/**
* fast-glob 匹配表达式 {@link https://github.com/mrmlnc/fast-glob}
*
* 会匹配 [srcDir] 目录下, 除 [srcExclude] 外满足表达式的 md 文件
*
* 默认:**.md
*/
pattern?: string | string[]
/**
* 排除扫描的文件
*
* default: vitepress.srcExclude || []
*/
ignoreList?: string[]
/**
* 是否使用文内 h1 作为标题(级别低于文内 title)
*
* default: true
*/
useH1Title?: boolean
/**
* 文件夹标题设置
*/
title?: TitleOptions
/**
* 侧边栏排序
*/
sort?: (a: Item, b: Item) => number
}
export interface TitleOptions {
/**
* 标题模式
*
* default: 'titlecase'
*/
mode?: TitleMode
/**
* 标题映射
*
* 例: { "web/js/": "🎉JavaScript🎉" }
*/
map?: Record<string, string>
}
// #region TitleMode
export type TitleMode = false | 'lowercase' | 'uppercase' | 'capitalize' | 'kebabcase' | 'titlecase' | ((text: string) => string)
// #endregion TitleMode
export interface Item extends ArticleOptions {
/**
* 文件名称
*/
name: string
/**
* 最终显示名称 优先级:配置 title > 文内 h1 > 文件名
*/
text: string
/**
* 地址链接
*/
link: string
/**
* 是否为文件
*/
isFile: boolean
/**
* 子级
*/
children: Item[]
}
export interface ArticleOptions {
/**
* 文件索引, 于文件名称或文内配置中提取,用于排序
* 文内配置优先
*
* 文件名称例: web/1.index.md
*/
index?: number
/**
* 文章是否隐藏
*/
hide?: boolean
/**
* 文章 Title
*/
title?: string
/**
* 文章的 h1 标题(自动提取,如无设置 title 备选)
*/
h1?: string
/**
* 是否为分组
*/
group?: boolean
/**
* 分组标题
*/
groupTitle?: string
/**
* 分组索引
*/
groupIndex?: number
/**
* 分组是否独立,独立的分组需要搭配 nav 路由使用
*/
groupAlone?: boolean
/**
* 是否添加可折叠按钮,默认不显示
* false 情况下折叠为打开状态,如果希望加载时关闭,将 collapsed 设置为 true
*
* @default undefined
*/
collapsed?: boolean
/**
* 排序在指定文件前
*/
sortPrev?: string
/**
* 排序在指定文件后
*/
sortNext?: string
}
export type Cache = Record<string, ArticleOptions>