vitepress-plugin-sidebar-permalink
Version:
VitePress 自动生成 sidebar 和 permalink rewrites 的插件
100 lines (79 loc) • 3.94 kB
Markdown
# vitepress-plugin-sidebar-permalink
VitePress 插件:自动生成 sidebar 侧边栏和 permalink rewrites 映射,支持数字前缀排序、collapsed 配置、permalink 匹配高亮、目录/文件名美化等。
## 用法
```ts
// .vitepress/config.ts
import { defineConfig } from 'vitepress'
import SidebarPermalinkPlugin, { generatedSidebar, generatedRewrites } from 'vitepress-plugin-sidebar-permalink'
export default defineConfig({
vite: {
plugins: [
SidebarPermalinkPlugin({
root: 'docs', // 根目录,默认为 'docs'
dir: 'docs/articles', // md文件所在目录,默认为 'docs/articles'
rewritesPath: 'docs/rewrites.json', // 重写规则文件路径,默认为
'docs/rewrites.json'
rewrites: {}, // 直接提供重写规则,一般为rewritesJson.rewrites
options: { collapsed: true }, // 侧边栏是否折叠,默认为 true
ignoreDirs: {
rewriteIgnores: [], // 默认重写规则忽略目录
sidebarIgnores: [] // 默认侧边栏忽略目录
},
navLinks: [ // 可选,导航栏配置
{ text: '组件', link: '/pages/fe4521' },
{ text: '后端', link: '/pages/571de5' },
{ text: '资源', link: '/pages/87a36a' }
],
})
]
},
// 使用插件自动生成的侧边栏和重写规则
rewrites: generatedRewrites,
themeConfig: {
sidebar: generatedSidebar
}
})
```
- 插件会在启动时生成侧边栏和重写规则,优先从`rewrites`参数获取重写规则,其次从生成的json文件读取,建议生成json文件后配置该参数
- 通过导出的 `generatedSidebar` 和 `generatedRewrites` 变量直接使用生成的配置
- 插件默认忽略目录
```ts
{
// 默认重写规则忽略目录
rewriteIgnores: ['.vitepress', 'node_modules', 'public', 'dist'],
// 默认侧边栏忽略目录
sidebarIgnores: ['.vitepress', 'node_modules', 'public', 'dist', '@pages', 'index.md']
}
```
### 修改侧边栏样式
```ts
// .vitepress/theme/index.ts
import type { Theme } from 'vitepress'
import DefaultTheme from 'vitepress/theme'
import 'vitepress-plugin-sidebar-permalink/index.css'
export default {
extends: DefaultTheme,
enhanceApp({ router }) {
// 自定义增强逻辑
}
} satisfies Theme
```
## 特性
- **全自动生成**:插件启动时自动生成侧边栏和重写规则,无需手动调用
- **自动生成侧边栏**:支持数字前缀排序、collapsed 配置、permalink 匹配高亮、目录/文件名美化
- **自动生成重写规则**:支持 permalink 映射,方便管理文档 URL
- **支持私有页面**:通过 frontmatter 中的 `private: true` 标记私有页面(只适配[本站主题包](https://vp.xiaoying.org.cn/pages/9d746f),配置后即可开启加密,访问需登录,`单独使用无效`)
- **支持隐藏侧边栏项**:通过 frontmatter 中的 `sidebar: false` 可以在侧边栏中隐藏特定页面
- **灵活配置**:可自定义忽略目录、折叠状态、导航链接等
- **保持与 VitePress 官方 sidebar 配置行为一致**
- **支持直接导出配置**:通过 `generatedSidebar` 和 `generatedRewrites` 直接使用生成的配置
## 配置选项
| 选项 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| `root` | string | 'docs' | 根目录路径 |
| `dir` | string | 'docs/articles' | md文件所在目录 |
| `rewritesPath` | string | 'docs/rewrites.json' | 重写规则文件路径 |
| `rewrites` | Record<string, string> | undefined | 直接提供重写规则(不从文件读取) |
| `options` | { collapsed: boolean } | { collapsed: true } | 侧边栏配置选项 |
| `navLinks` | array | undefined | 导航栏配置 |
| `ignoreDirs` | IgnoreDirs | 见上文 | 忽略目录配置 |