https://github.com/onlymisaky/vite-plugin-vitepress-bar
https://github.com/onlymisaky/vite-plugin-vitepress-bar
Last synced: 4 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/onlymisaky/vite-plugin-vitepress-bar
- Owner: onlymisaky
- Created: 2024-08-20T11:54:22.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2024-12-20T15:20:34.000Z (over 1 year ago)
- Last Synced: 2025-10-22T21:59:48.936Z (8 months ago)
- Language: TypeScript
- Size: 107 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# vite-plugin-vitepress-bar
为 `vitepress` 自动生成 `nav` 和 `sidebar`
## 特性
- [X] 自动生成 `nav` 和 `sidebar`
- [X] 支持路径过滤
- [X] 支持 `dev` 模式自动更新
- [ ] 支持自定义排序 (enableMdContent)
- [ ] 支持自定义标题 (enableMdContent)
- [ ] 自动排除空文件夹
- [ ] nav 优化 (层级问题, 没有 index.md 问题)
## 使用
```bash
npm i vite-plugin-vitepress-bar -D
```
```js
import vitepressBar from 'vite-plugin-vitepress-sidebar'
import { defineConfig } from 'vitepress'
export default defineConfig({
plugins: [
vitepressBar(),
],
})
```
## API
### filter
- 说明
- 文件过滤器,用于精确控制文件在 `nav` 和 `sidebar` 中显示
- 继承自 `srcDir` 配置项,既只有能被 `vitepress` 读取到才会被读取
- 如果是个空文件夹,将不会显示
- 支持相对路径路径(相对 srcDir)、正则、fast-glob、自定义函数
- 类型
- `string`
- `string[]`
- `RegExp`
- `RegExp[]`
- `(fileInfo: FileInfo) => MaybePromise`
### complete
- 说明
- `bar` 生成后的回调
- 如果传入该配置项,则会将该函数的返回值作为 `nav` 和 `sidebar` 覆盖原有的配置
- 如果不传入该配置项,则会将生成的 `bar` 覆盖原有的 `nav` 和 `sidebar`
- 类型
- `(bar: Bar) => { sidebar: DefaultTheme.Sidebar, nav: DefaultTheme.NavItem[] }`
## 类型说明
### FileInfo
```typescript
interface FileInfoSlim {
path: string
name: string
}
interface FileInfoSlimWithStats extends FileInfoSlim {
stats: fs.Stats
}
interface FileInfo extends FileInfoSlimWithStats {
files: string[]
parent: FileInfo | null | undefined
}
```
### MaybePromise
```typescript
type MaybePromise = T | Promise
```
### Bar
```typescript
import type { DefaultTheme } from 'vitepress'
type NavItem = DefaultTheme.NavItemChildren | DefaultTheme.NavItemWithLink
interface SidebarMulti {
[key: string]: DefaultTheme.SidebarItem[]
}
interface Bar {
sidebar: SidebarMulti
nav: NavItem[]
}
```