VitePress 插件模块
本项目集成了多个 VitePress 插件,以增强文档的功能和用户体验。
插件概览
| 插件名称 | 功能说明 | 状态 |
|---|---|---|
| vitepress-plugin-mermaid | Mermaid 图表支持 | 已集成 |
| vitepress-sidebar | 自动侧边栏生成 | 已配置 |
| vitepress-plugin-tabs | 代码/内容标签页 | 已集成 |
| medium-zoom | 图片点击放大 | 已集成 |
| vitepress-plugin-back-to-top | 返回顶部按钮 | 已集成 |
| @mdit/plugin-katex | 数学公式渲染 | 已集成 |
| markdown-it-* | Markdown 增强插件 | 已集成 |
| busuanzi | 访客统计 | 已集成 |
| UnoCSS | 原子化 CSS 框架 | 已集成 |
| vitepress-plugin-llms | AI/LLM 集成 | 已配置 |
1. Mermaid 图表插件
简介
vitepress-plugin-mermaid 为 VitePress 提供 Mermaid 图表渲染支持。
安装
pnpm add -D vitepress-plugin-mermaid mermaid配置
// .vitepress/config.mts
import { withMermaid } from 'vitepress-plugin-mermaid'
export default withMermaid(
defineConfig({
mermaid: {
theme: 'default',
},
})
)使用示例
```mermaid
graph LR
A[开始] --> B{判断}
B -->|是| C[执行]
B -->|否| D[结束]
```效果展示
2. 自动侧边栏插件
简介
vitepress-sidebar 根据文件目录结构自动生成侧边栏配置。
安装
pnpm add -D vitepress-sidebar配置
// .vitepress/config.mts
import { withSidebar } from 'vitepress-sidebar'
const vitePressOptions = {
// VitePress 配置
}
const sidebarOptions = {
documentRootPath: '/docs',
useTitleFromFileHeading: true,
hyphenToSpace: true,
collapsed: true,
}
export default defineConfig(
withSidebar(vitePressOptions, sidebarOptions)
)配置选项
| 选项 | 说明 | 默认值 |
|---|---|---|
documentRootPath | 文档根目录 | /docs |
useTitleFromFileHeading | 从文件标题获取菜单名 | true |
collapsed | 默认折叠 | true |
hyphenToSpace | 连字符转空格 | true |
3. Tabs 标签页插件
简介
vitepress-plugin-tabs 支持在 Markdown 中创建标签页。
安装
pnpm add -D vitepress-plugin-tabs配置
// .vitepress/config.mts
import { tabsMarkdownPlugin } from 'vitepress-plugin-tabs'
export default defineConfig({
markdown: {
config: (md) => {
md.use(tabsMarkdownPlugin)
},
},
})// .vitepress/theme/index.ts
import { enhanceAppWithTabs } from 'vitepress-plugin-tabs/client'
export default {
enhanceApp({ app }) {
enhanceAppWithTabs(app)
},
}使用示例
:::tabs key:pm
== npm
npm install package-name
== yarn
yarn add package-name
== pnpm
pnpm add package-name
:::4. 图片缩放插件
简介
medium-zoom 提供类似 Medium 的图片点击放大效果。
安装
pnpm add -D medium-zoom配置
// .vitepress/theme/index.ts
import mediumZoom from 'medium-zoom'
import { onMounted, watch, nextTick } from 'vue'
import { useRoute } from 'vitepress'
export default {
setup() {
const route = useRoute()
const initZoom = () => {
mediumZoom('.main img', {
background: 'var(--vp-c-bg)',
margin: 24
})
}
onMounted(() => initZoom())
watch(
() => route.path,
() => nextTick(() => initZoom())
)
}
}配置选项
| 选项 | 说明 | 默认值 |
|---|---|---|
background | 遮罩背景色 | #fff |
margin | 图片边距 | 0 |
scrollOffset | 滚动偏移关闭 | 40 |
container | 自定义容器 | null |
5. 返回顶部插件
简介
vitepress-plugin-back-to-top 添加返回顶部按钮。
安装
pnpm add -D vitepress-plugin-back-to-top配置
// .vitepress/theme/index.ts
import vitepressBackToTop from 'vitepress-plugin-back-to-top'
import 'vitepress-plugin-back-to-top/dist/style.css'
export default {
enhanceApp({ app }) {
vitepressBackToTop({
threshold: 300 // 滚动 300px 后显示
})
},
}6. KaTeX 数学公式插件
简介
@mdit/plugin-katex 支持 LaTeX 数学公式渲染。
安装
pnpm add -D @mdit/plugin-katex katex配置
// .vitepress/config.mts
import { katex } from '@mdit/plugin-katex'
export default defineConfig({
head: [
['link', {
rel: 'stylesheet',
href: 'https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css'
}],
],
markdown: {
config: (md) => {
md.use(katex)
},
},
})使用示例
行内公式:
质能方程 $E = mc^2$ 是物理学中最著名的公式。块级公式:
$$
\frac{-b \pm \sqrt{b^2 - 4ac}}{2a}
$$效果展示
质能方程 是物理学中最著名的公式。
7. Markdown-it 插件集
7.1 脚注插件 (markdown-it-footnote)
安装:
pnpm add -D markdown-it-footnote使用示例:
这是一个脚注引用[^1]。
[^1]: 这是脚注的内容。7.2 高亮标记插件 (markdown-it-mark)
安装:
pnpm add -D markdown-it-mark使用示例:
这是 ==高亮标记== 文本。7.3 上下标插件 (markdown-it-sub/sup)
安装:
pnpm add -D markdown-it-sub markdown-it-sup使用示例:
H~2~O 是水的化学式。
E = mc^2^ 是质能方程。7.4 任务列表插件 (markdown-it-task-lists)
安装:
pnpm add -D markdown-it-task-lists使用示例:
- [x] 已完成任务
- [ ] 未完成任务
- [ ] 待办事项配置汇总
// .vitepress/config.mts
import footnote from 'markdown-it-footnote'
import mark from 'markdown-it-mark'
import sub from 'markdown-it-sub'
import sup from 'markdown-it-sup'
import taskLists from 'markdown-it-task-lists'
export default defineConfig({
markdown: {
config: (md) => {
md.use(footnote)
md.use(mark)
md.use(sub)
md.use(sup)
md.use(taskLists)
},
},
})8. 不蒜子访客统计
简介
不蒜子 是一个极简的网站计数服务,无需注册即可使用。
安装
pnpm add -D busuanzi.pure.js配置
方式一:通过 Head 引入
// .vitepress/config.mts
export default defineConfig({
head: [
['script', {
async: '',
src: '//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js'
}],
],
})方式二:在组件中使用
<template>
<div class="busuanzi-container">
<span>本站访问量:<span id="busuanzi_value_site_pv"></span> 次</span>
<span>访客数:<span id="busuanzi_value_site_uv"></span> 人</span>
</div>
</template>
<script setup>
import { onMounted } from 'vue'
import busuanzi from 'busuanzi.pure.js'
onMounted(() => {
busuanzi.fetch()
})
</script>统计类型
| ID | 说明 |
|---|---|
busuanzi_value_site_pv | 站点总访问量 |
busuanzi_value_site_uv | 站点访客数 |
busuanzi_value_page_pv | 当前页面访问量 |
9. UnoCSS 原子化 CSS
简介
UnoCSS 是即时原子化 CSS 引擎,比 Tailwind CSS 更快更轻量。
安装
pnpm add -D unocss @unocss/reset配置
uno.config.ts
import { defineConfig, presetUno, presetAttributify, presetIcons } from 'unocss'
export default defineConfig({
presets: [
presetUno(),
presetAttributify(),
presetIcons({
scale: 1.2,
warn: true,
}),
],
shortcuts: {
'flex-center': 'flex items-center justify-center',
'flex-between': 'flex items-center justify-between',
},
})VitePress 配置
// .vitepress/config.mts
import UnoCSS from 'unocss/vite'
export default defineConfig({
vite: {
plugins: [UnoCSS()],
},
})主题引入
// .vitepress/theme/index.ts
import 'virtual:uno.css'使用示例
<div class="flex-center p-4 bg-blue-500 text-white rounded-lg">
原子化 CSS 示例
</div>10. AI/LLM 集成插件
简介
vitepress-plugin-llms 为文档站点生成适合 LLM 训练的文件。
安装
pnpm add -D vitepress-plugin-llms配置
// .vitepress/config.mts
import llmstxtPlugin from 'vitepress-plugin-llms'
export default defineConfig({
vite: {
plugins: [
llmstxtPlugin({
hostname: 'https://your-domain.com',
llmsFullFile: true,
})
],
},
})功能特点
- 自动生成
llms.txt文件 - 支持自定义 LLM 训练数据格式
- 可配置忽略特定页面
- 支持元数据自定义
11. PDF 导出插件
简介
vitepress-export-pdf 支持将文档导出为 PDF。
安装
pnpm add -D vitepress-export-pdf配置
// .vitepress/export-pdf.config.ts
import { defineUserConfig } from 'vitepress-export-pdf'
export default defineUserConfig({
pdfOptions: {
format: 'A4',
margin: {
top: '40px',
bottom: '40px',
},
},
})使用命令
npx vitepress-export-pdf export docs插件开发指南
创建自定义插件
// my-plugin.ts
import type { Plugin } from 'vite'
export function myVitePressPlugin(): Plugin {
return {
name: 'vitepress-plugin-custom',
enforce: 'pre',
transform(code, id) {
// 转换逻辑
return code
},
}
}创建 Markdown-it 插件
// my-md-plugin.ts
import type MarkdownIt from 'markdown-it'
export function myMarkdownPlugin(md: MarkdownIt) {
md.inline.ruler.before('emphasis', 'my-rule', (state, silent) => {
// 解析逻辑
return false
})
}常见问题
Q: 插件加载顺序有影响吗?
A: 是的,某些插件需要特定的加载顺序。一般建议:
- 先加载基础配置插件
- 再加载 Markdown 增强插件
- 最后加载 UI 增强插件
Q: 如何调试插件?
A: 可以使用 vite --debug 模式查看插件加载情况。
Q: 插件冲突如何解决?
A: 检查插件是否有相同的钩子或修改相同的内容,必要时调整加载顺序或使用条件加载。
参考资源
12. 代码块折叠插件
简介
vitepress-plugin-codeblocks-fold 为长代码块添加折叠功能。
安装
pnpm add -D vitepress-plugin-codeblocks-fold配置
// .vitepress/theme/index.ts
import codeblocksFold from 'vitepress-plugin-codeblocks-fold'
import 'vitepress-plugin-codeblocks-fold/style/index.css'
export default {
enhanceApp({ app }) {
app.use(codeblocksFold)
},
}功能特点
- 自动为超过指定行数的代码块添加折叠按钮
- 支持自定义折叠阈值
- 保持代码高亮和复制功能
- 响应式设计
配置选项
app.use(codeblocksFold, {
// 超过多少行显示折叠按钮
height: 300,
// 折叠按钮文本
foldText: '展开',
unfoldText: '收起'
})13. Giscus 评论插件
简介
vitepress-plugin-comment-with-giscus 基于 GitHub Discussions 的评论系统。
安装
pnpm add -D vitepress-plugin-comment-with-giscus前置条件
- GitHub 仓库必须是公开的
- 在仓库中启用 Discussions 功能
- 安装 Giscus App
配置
// .vitepress/theme/index.ts
import giscusTalk from 'vitepress-plugin-comment-with-giscus'
import { useData, useRoute } from 'vitepress'
export default {
enhanceApp({ app }) {
app.component('GiscusComment', giscusTalk({
repo: 'your-username/your-repo',
repoId: 'your-repo-id',
category: 'Announcements',
categoryId: 'your-category-id',
mapping: 'pathname',
inputPosition: 'top',
lang: 'zh-CN',
lightTheme: 'light',
darkTheme: 'dark',
}, {
frontmatter: useData().frontmatter.value,
route: useRoute()
}))
},
}在页面中使用
<template>
<div>
<!-- 页面内容 -->
<GiscusComment />
</div>
</template>配置选项
| 选项 | 说明 | 必填 |
|---|---|---|
repo | GitHub 仓库 | 是 |
repoId | 仓库 ID | 是 |
category | Discussion 分类 | 是 |
categoryId | 分类 ID | 是 |
mapping | 页面映射方式 | 否 |
lang | 语言 | 否 |
14. Google Analytics 插件
简介
vitepress-plugin-google-analytics 集成 Google Analytics 4。
安装
pnpm add -D vitepress-plugin-google-analytics配置
// .vitepress/config.mts
import googleAnalytics from 'vitepress-plugin-google-analytics'
export default defineConfig({
vite: {
plugins: [
googleAnalytics({
id: 'G-XXXXXXXXXX', // 你的 GA4 测量 ID
})
],
},
})功能特点
- 自动追踪页面浏览
- 支持自定义事件
- 尊重用户隐私设置
- 支持开发环境禁用
自定义事件追踪
// 在组件中使用
import { useGtag } from 'vitepress-plugin-google-analytics/client'
const { event } = useGtag()
// 追踪自定义事件
event('button_click', {
event_category: 'engagement',
event_label: 'download_button',
value: 1
})15. 图标组插件
简介
vitepress-plugin-group-icons 为侧边栏和导航栏添加图标支持。
安装
pnpm add -D vitepress-plugin-group-icons
pnpm add -D @iconify-json/carbon @iconify-json/icon-park-outline @iconify-json/octicon配置
// .vitepress/config.mts
import { groupIconMdPlugin, groupIconVitePlugin } from 'vitepress-plugin-group-icons'
export default defineConfig({
markdown: {
config: (md) => {
md.use(groupIconMdPlugin)
},
},
vite: {
plugins: [
groupIconVitePlugin()
],
},
})使用示例
在侧边栏中使用:
sidebar: {
'/guide/': [
{
text: 'carbon:logo-github 开始',
items: [
{ text: 'octicon:home-16 首页', link: '/guide/' },
{ text: 'icon-park-outline:guide-board 指南', link: '/guide/start' }
]
}
]
}在 Markdown 中使用:
:carbon-logo-github: GitHub
:octicon-home-16: 首页
:icon-park-outline-guide-board: 指南支持的图标集
- Carbon Icons (@iconify-json/carbon)
- Octicons (@iconify-json/octicon)
- Icon Park Outline (@iconify-json/icon-park-outline)
- 更多图标集见 Iconify
16. 图片查看器插件
简介
vitepress-plugin-image-viewer 提供图片预览和查看功能。
安装
pnpm add -D vitepress-plugin-image-viewer配置
// .vitepress/theme/index.ts
import imageViewer from 'vitepress-plugin-image-viewer'
import 'vitepress-plugin-image-viewer/dist/style.css'
import { useRoute } from 'vitepress'
export default {
setup() {
const route = useRoute()
imageViewer(route)
},
}功能特点
- 点击图片全屏预览
- 支持图片缩放、旋转
- 支持键盘快捷键
- 支持图片组浏览
- 响应式设计
配置选项
imageViewer(route, {
// 选择器
selector: '.vp-doc img',
// 是否显示工具栏
toolbar: true,
// 是否显示标题
title: true,
// 背景色
backgroundColor: 'rgba(0, 0, 0, 0.8)'
})17. NProgress 进度条插件
简介
vitepress-plugin-nprogress 为页面切换添加顶部进度条。
安装
pnpm add -D vitepress-plugin-nprogress配置
// .vitepress/theme/index.ts
import NProgress from 'vitepress-plugin-nprogress'
import 'vitepress-plugin-nprogress/lib/css/index.css'
export default {
enhanceApp({ app, router }) {
NProgress(router)
},
}自定义样式
/* .vitepress/theme/custom.css */
#nprogress .bar {
background: #42b883 !important; /* 自定义颜色 */
height: 3px !important; /* 自定义高度 */
}
#nprogress .peg {
box-shadow: 0 0 10px #42b883, 0 0 5px #42b883 !important;
}配置选项
NProgress(router, {
// 最小百分比
minimum: 0.08,
// 动画速度
speed: 200,
// 是否显示加载圈
showSpinner: false
})18. Nolebase 增强插件
简介
Nolebase 提供多个增强阅读体验的插件。
18.1 增强阅读性插件
安装:
pnpm add -D @nolebase/vitepress-plugin-enhanced-readabilities配置:
// .vitepress/theme/index.ts
import {
NolebaseEnhancedReadabilitiesMenu,
NolebaseEnhancedReadabilitiesScreenMenu
} from '@nolebase/vitepress-plugin-enhanced-readabilities/client'
import '@nolebase/vitepress-plugin-enhanced-readabilities/client/style.css'
export default {
enhanceApp({ app }) {
app.component('NolebaseEnhancedReadabilitiesMenu', NolebaseEnhancedReadabilitiesMenu)
app.component('NolebaseEnhancedReadabilitiesScreenMenu', NolebaseEnhancedReadabilitiesScreenMenu)
},
}功能特点:
- 字体大小调节
- 内容宽度调节
- 行高调节
- 段落间距调节
- 阅读模式切换
18.2 高亮标题插件
安装:
pnpm add -D @nolebase/vitepress-plugin-highlight-targeted-heading配置:
// .vitepress/theme/index.ts
import { NolebaseHighlightTargetedHeading } from '@nolebase/vitepress-plugin-highlight-targeted-heading/client'
import '@nolebase/vitepress-plugin-highlight-targeted-heading/client/style.css'
export default {
enhanceApp({ app }) {
app.component('NolebaseHighlightTargetedHeading', NolebaseHighlightTargetedHeading)
},
}功能特点:
- 点击目录时高亮对应标题
- 平滑滚动到目标位置
- 自定义高亮样式
- 支持深色模式
19. PWA 插件
简介
@vite-pwa/vitepress 为 VitePress 添加 PWA 支持。
安装
pnpm add -D @vite-pwa/vitepress vite-plugin-pwa
pnpm add -D @vite-pwa/assets-generator配置
// .vitepress/config.mts
import { withPwa } from '@vite-pwa/vitepress'
export default withPwa(
defineConfig({
// VitePress 配置
}),
{
// PWA 配置
registerType: 'autoUpdate',
includeAssets: ['favicon.svg'],
manifest: {
name: '技术面试知识库',
short_name: 'Tech Docs',
description: '全栈开发技术面试准备与实战文档',
theme_color: '#ffffff',
icons: [
{
src: 'pwa-192x192.png',
sizes: '192x192',
type: 'image/png',
},
{
src: 'pwa-512x512.png',
sizes: '512x512',
type: 'image/png',
},
],
},
workbox: {
globPatterns: ['**/*.{css,js,html,svg,png,ico,txt,woff2}'],
},
}
)生成 PWA 资源
pnpm generate-pwa-assets功能特点
- 离线访问支持
- 自动更新
- 安装到桌面
- 推送通知(可选)
- 资源预缓存
20. Markdown 属性插件
简介
markdown-it-attrs 为 Markdown 元素添加自定义属性。
安装
pnpm add -D markdown-it-attrs配置
// .vitepress/config.mts
import attrs from 'markdown-it-attrs'
export default defineConfig({
markdown: {
config: (md) => {
md.use(attrs)
},
},
})使用示例
添加 class:
# 标题 {.custom-class}
段落文本 {.highlight}添加 id:
## 章节 {#custom-id}添加多个属性:
{.img-responsive width=300 height=200}添加 style:
文本 {style="color: red; font-weight: bold;"}21. Cytoscape 图形插件
简介
Cytoscape.js 是一个图论(网络)可视化库,可用于绘制复杂的关系图。
安装
pnpm add -D cytoscape cytoscape-cose-bilkent配置
// .vitepress/theme/components/CytoscapeGraph.vue
<template>
<div ref="cy" class="cytoscape-container"></div>
</template>
<script setup>
import { ref, onMounted } from 'vue'
import cytoscape from 'cytoscape'
import coseBilkent from 'cytoscape-cose-bilkent'
cytoscape.use(coseBilkent)
const cy = ref(null)
onMounted(() => {
cytoscape({
container: cy.value,
elements: [
{ data: { id: 'a' } },
{ data: { id: 'b' } },
{ data: { id: 'ab', source: 'a', target: 'b' } }
],
style: [
{
selector: 'node',
style: {
'background-color': '#666',
'label': 'data(id)'
}
}
],
layout: {
name: 'cose-bilkent'
}
})
})
</script>
<style scoped>
.cytoscape-container {
width: 100%;
height: 400px;
border: 1px solid #ddd;
}
</style>使用场景
- 技术架构图
- 依赖关系图
- 知识图谱
- 流程图
- 组织结构图
22. Day.js 时间处理
简介
Day.js 是一个轻量级的时间处理库,用于格式化和操作日期。
安装
pnpm add -D dayjs使用示例
// .vitepress/theme/utils/date.ts
import dayjs from 'day
/utils/date'
const publishDate = '2025-02-13'
const updateDate = '2025-02-13'
</script>插件配置完整示例
config.mts 完整配置
import { defineConfig } from 'vitepress'
import { withMermaid } from 'vitepress-plugin-mermaid'
import { withPwa } from '@vite-pwa/vitepress'
import { tabsMarkdownPlugin } from 'vitepress-plugin-tabs'
import { groupIconMdPlugin, groupIconVitePlugin } from 'vitepress-plugin-group-icons'
import googleAnalytics from 'vitepress-plugin-google-analytics'
import llmstxtPlugin from 'vitepress-plugin-llms'
import UnoCSS from 'unocss/vite'
import { katex } from '@mdit/plugin-katex'
import footnote from 'markdown-it-footnote'
import mark from 'markdown-it-mark'
import sub from 'markdown-it-sub'
import sup from 'markdown-it-sup'
import taskLists from 'markdown-it-task-lists'
import attrs from 'markdown-it-attrs'
export default withPwa(
withMermaid(
defineConfig({
// 基础配置
title: '技术面试知识库',
description: '全栈开发技术面试准备与实战文档',
// Head 配置
head: [
['link', { rel: 'stylesheet', href: 'https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css' }],
['script', { async: '', src: '//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js' }],
],
// Markdown 配置
markdown: {
config: (md) => {
md.use(katex)
md.use(footnote)
md.use(mark)
md.use(sub)
md.use(sup)
md.use(taskLists)
md.use(attrs)
md.use(tabsMarkdownPlugin)
md.use(groupIconMdPlugin)
},
},
// Mermaid 配置
mermaid: {
theme: 'default',
},
// Vite 配置
vite: {
plugins: [
UnoCSS(),
groupIconVitePlugin(),
googleAnalytics({ id: 'G-XXXXXXXXXX' }),
llmstxtPlugin({ hostname: 'https://your-domain.com' }),
],
},
})
),
{
// PWA 配置
registerType: 'autoUpdate',
manifest: {
name: '技术面试知识库',
short_name: 'Tech Docs',
theme_color: '#ffffff',
},
}
)theme/index.ts 完整配置
import DefaultTheme from 'vitepress/theme'
import { enhanceAppWithTabs } from 'vitepress-plugin-tabs/client'
import vitepressBackToTop from 'vitepress-plugin-back-to-top'
import codeblocksFold from 'vitepress-plugin-codeblocks-fold'
import giscusTalk from 'vitepress-plugin-comment-with-giscus'
import imageViewer from 'vitepress-plugin-image-viewer'
import NProgress from 'vitepress-plugin-nprogress'
import { NolebaseEnhancedReadabilitiesMenu } from '@nolebase/vitepress-plugin-enhanced-readabilities/client'
import { NolebaseHighlightTargetedHeading } from '@nolebase/vitepress-plugin-highlight-targeted-heading/client'
import mediumZoom from 'medium-zoom'
import { onMounted, watch, nextTick } from 'vue'
import { useData, useRoute } from 'vitepress'
// 样式导入
import 'virtual:uno.css'
import 'vitepress-plugin-back-to-top/dist/style.css'
import 'vitepress-plugin-codeblocks-fold/style/index.css'
import 'vitepress-plugin-image-viewer/dist/style.css'
import 'vitepress-plugin-nprogress/lib/css/index.css'
import '@nolebase/vitepress-plugin-enhanced-readabilities/client/style.css'
import '@nolebase/vitepress-plugin-highlight-targeted-heading/client/style.css'
import './custom.css'
export default {
extends: DefaultTheme,
setup() {
const route = useRoute()
// 图片缩放
const initZoom = () => {
mediumZoom('.main img', { background: 'var(--vp-c-bg)' })
}
onMounted(() => {
initZoom()
imageViewer(route)
})
watch(() => route.path, () => nextTick(() => initZoom()))
},
enhanceApp({ app, router }) {
// Tabs
enhanceAppWithTabs(app)
// 返回顶部
vitepressBackToTop({ threshold: 300 })
// 代码块折叠
app.use(codeblocksFold)
// 进度条
NProgress(router)
// Nolebase 组件
app.component('NolebaseEnhancedReadabilitiesMenu', NolebaseEnhancedReadabilitiesMenu)
app.component('NolebaseHighlightTargetedHeading', NolebaseHighlightTargetedHeading)
// Giscus 评论
const { frontmatter } = useData()
app.component('GiscusComment', giscusTalk({
repo: 'your-username/your-repo',
repoId: 'your-repo-id',
category: 'Announcements',
categoryId: 'your-category-id',
mapping: 'pathname',
lang: 'zh-CN',
}, {
frontmatter: frontmatter.value,
route: useRoute()
}))
},
}性能优化建议
1. 按需加载插件
// 仅在生产环境启用某些插件
const isProd = process.env.NODE_ENV === 'production'
export default defineConfig({
vite: {
plugins: [
isProd && googleAnalytics({ id: 'G-XXXXXXXXXX' }),
].filter(Boolean),
},
})2. 代码分割
// 动态导入大型组件
const CytoscapeGraph = defineAsyncComponent(() =>
import('./components/CytoscapeGraph.vue')
)3. 图片优化
- 使用 WebP 格式
- 启用图片懒加载
- 压缩图片资源
4. 缓存策略
// PWA 缓存配置
workbox: {
runtimeCaching: [
{
urlPattern: /^https:\/\/cdn\.jsdelivr\.net\/.*/i,
handler: 'CacheFirst',
options: {
cacheName: 'cdn-cache',
expiration: {
maxEntries: 10,
maxAgeSeconds: 60 * 60 * 24 * 365 // 1 年
},
},
},
],
}故障排查
插件不生效
- 检查插件是否正确安装
- 确认配置文件语法正确
- 查看浏览器控制台错误
- 尝试清除缓存重新构建
样式冲突
- 检查 CSS 加载顺序
- 使用 CSS 作用域
- 调整 CSS 优先级
构建失败
- 检查 Node.js 版本
- 删除 node_modules 重新安装
- 查看构建日志定位问题
总结
本项目集成了 22 个 VitePress 插件,涵盖:
✅ 内容增强:Mermaid、KaTeX、Markdown-it 插件集 ✅ 交互体验:Tabs、图片缩放、代码折叠、返回顶部 ✅ 阅读体验:Nolebase 增强、进度条、高亮标题 ✅ 社交功能:Giscus 评论、不蒜子统计 ✅ 开发工具:UnoCSS、图标组、PWA ✅ 分析追踪:Google Analytics、LLM 集成 ✅ 可视化:Cytoscape 图形库 ✅ 工具库:Day.js 时间处理
这些插件共同构建了一个功能完善、体验优秀的技术文档站点。