VitePress
VitePress 是 Vue 团队维护的静态站点生成器 SSG,VuePress 的精神继任者,基于 Vite + Vue3,主打技术文档站,Markdown 写内容,输出纯静态 HTML,可以部署到任意静态托管平台(GitHub Pages、Netlify、Cloudflare Pages、Nginx等)。
核心模式:SSG预渲染 + 客户端SPA水合 首次访问输出完整静态HTML(SEO友好);页面跳转后变成SPA,无整页刷新,体验流畅。
VitePress技术栈
- 底层:Vite(构建) + Vue3(渲染) + markdown‑it(解析md) + Shiki(代码高亮)
- 许可证:MIT,完全开源免费
- 版本:
1.x稳定版;2.x重大升级,构建性能大幅提升,支持增量构建、并行处理,适合大文档量项目。
VitePress目录结构(标准)
docs/
├─ .vitepress/ # 全部配置、主题、缓存,**不会被渲染成页面**
│ ├─ config.mjs # 主配置文件(最重要)
│ ├─ theme/ # 自定义主题组件(可选)
│ └─ cache/ # 构建缓存
├─ index.md # 首页,访问 /
├─ guide/
│ ├─ index.md
│ └─ quick.md
└─ api/
└─ index.md规则:docs下除
.vitepress以外所有md文件都会生成页面。 文件系统路由:guide/quick.md→ 访问地址/guide/quick。
VitePress核心工作原理
开发模式(dev) Vite 开发服务器,按需编译,修改md文件毫秒级HMR热更新,不用全量打包。
构建模式(build)
- 把每一个
.md文件编译成 Vue 组件; - 服务端预渲染输出静态 HTML;
- 同时打包客户端JS,页面跳转时激活SPA;
- 输出产物在
docs/.vitepress/dist,直接复制即可部署。
重要:所有页面在构建阶段就全部生成完成,运行时不再执行服务端逻辑。
两种页面生成方式
- 物理md文件(最常用):磁盘上真实的
.md,适合你搭配 Decap CMS,CMS修改文件,CI自动构建。 - 动态路由
[xxx].paths.js:构建时拉取API/数据库,动态生成大量页面,没有物理md文件。
动态路由的缺点:页面越多,构建内存消耗越大,容易OOM,这也是之前提到上万页会吃力的根源。
VitePress内置核心能力
1. Markdown 增强
- Frontmatter:页面元信息(title、description、tags),md头部
---包裹; - 自定义容器:
::: tip / warning / danger; - MD 内直接写 Vue 组件,这是VitePress一大特色,可以在文档嵌入交互组件;
- Shiki 代码高亮,支持大量语言,可自定义主题;
- 表格、列表、图片、链接、数学公式KaTeX、Mermaid流程图(需要插件)。
2. 默认主题(开箱即用文档主题)
- 顶部导航栏 nav
- 侧边栏 sidebar(原生不会自动生成,需要手动配置数组,这是很多人踩坑点)
- 页面大纲(右侧目录)
- 页脚、最后更新时间、编辑此页链接
- 深色/浅色模式切换
- 多语言 i18n 国际化配置
3. 搜索
local:内置本地搜索(minisearch),浏览器端索引,页面越多索引越大,会消耗内存;algolia:对接 Algolia DocSearch,适合大型站点,不需要本地构建索引。
4. 扩展能力
- Vite插件体系:可以直接使用全部Vite生态插件;
- Markdown插件:扩展md语法;
- 自定义主题:完全重写布局,不使用官方默认主题;
- defineLoader:构建时加载本地json、数据文件;
- 动态路由:构建时拉外部接口批量生成页面。
VitePress命令
bash
# 开发预览
pnpm docs:dev
# 构建静态产物
pnpm docs:build
# 本地预览构建后的dist
pnpm docs:previewVitePress优点
- 开发体验极好:Vite驱动,冷启动快,修改md即时刷新;
- Vue生态无缝:文档内直接使用Vue组件,Vue开发者上手成本极低;
- 轻量、无侵入:源码就是md文件,Git管理,完美适配 Decap/Sveltia CMS;
- SEO友好:输出静态HTML;
- 部署简单:dist静态文件,任意静态服务器都能跑;
- 2.x版本大幅优化大文档构建性能,增量构建、多核并行,缓解大量页面构建慢问题。
VitePress缺点与局限(重点,结合你前面的场景)
- 原生不会自动生成侧边栏:新增md不会自动加到sidebar,需要手动维护;社区插件
vitepress-sidebar可以解决; - 页面数量上限:物理md文件几千页尚可;上万页构建内存压力大,容易OOM;动态路由生成页面更吃内存;
- 没有内置文档版本管理(对比Docusaurus),多版本文档需要自己搭建多套目录;
- 自定义主题有一定学习成本,要懂Vue组件插槽;
- 没有内置CMS,内容编辑必须依赖外部Git‑CMS或者手动写md;
- 本地搜索在页面极多时,浏览器加载索引会变慢,建议切换Algolia。
适合:技术文档、手册、知识库,团队熟悉Vue,内容以md文件存放,希望Git版本控制。 不适合:大型博客、需要原生版本管理、十万级内容量。
VitePress和竞品对比
| 框架 | 底层 | 优势 | 短板 |
|---|---|---|---|
| VitePress | Vite+Vue3 | 开发快、Vue生态、md原生、轻量 | 无版本管理、大页面构建压力 |
| Docusaurus | React | RSS、内置文档版本、插件丰富 | 构建慢、React栈 |
| Astro(Starlight) | Astro | 多框架组件、极致静态性能 | Vue集成不如VitePress原生 |
VitePress结合你前面的需求总结
- 你的场景:文档站,几千页,希望CMS后台编辑md,每个目录独立sidebar配置
- VitePress 非常合适;搭配 Decap CMS / Sveltia CMS,直接修改仓库md与sidebar配置,CI自动构建;
- 注意点:
- 优先使用物理md文件,尽量少用动态路由生成大量页面;
- 页面超过5000,升级VitePress 2.x,加大Node内存;
- 页面多了之后把本地搜索换成Algolia;
- 侧边栏可以用每个目录独立
sidebar.mjs,config中导入合并。
VitePress常见坑
- 侧边栏不会自动生成,必须配置;
- 大量页面构建CI环境OOM:
NODE_OPTIONS=--max-old-space-size=8192加大内存; - 动态路由生成大量页面,内存消耗远高于物理md;
- 本地搜索在页面很多时,浏览器卡顿,建议外置搜索;
.vitepress目录内的文件不会渲染为网页。
VitePress官方站点
- 官方网站(英文):https://vitepress.dev/
- 中文文档:https://vitepress.dev/zh/
- GitHub仓库:https://github.com/vuejs/vitepress
- 在线试玩(StackBlitz):StackBlitz文档页直接打开,浏览器内跑项目,不用本地安装
注意:VitePress 2.x是当前重点迭代版本,性能、增量构建大幅提升。
大厂/开源项目真实使用案例(官方生态)
这些项目直接使用VitePress构建文档站,可以作为参考范本:
- Vue.js 官方文档:自定义主题,多语言、大量Vue组件嵌入文档
- Vite 官方文档:VitePress原生默认主题
- Vitest(测试框架)文档:文档内嵌代码沙箱、交互式demo
- Pinia 状态管理文档
- VueUse 工具库文档
- UnoCSS、Iconify、Rollup、D3.js 官方文档
特点:大量使用md中嵌入Vue组件、代码示例、多语言、自定义主题。
VitePress社区优秀模板 & 项目
1. 文档/知识库模板
- vitepress‑sidebar:自动生成侧边栏插件(解决手动写sidebar痛点,你之前关注的)
- WPD:VitePress增强模板,内置Mermaid、时间线、图片缩放、评论、多语言,适合知识库/个人博客
- vitepress‑theme‑element‑plus:Element‑Plus风格文档主题,支持demo预览容器
2. 个人博客/导航站模板
- vitepress‑nav‑template:个人导航主页模板,支持Tailwind、Giscus评论、访客统计
VitePress常用社区插件(高频)
| 插件 | 用途 |
|---|---|
vitepress‑sidebar | 自动扫描md文件生成侧边栏,无需手动写数组 |
vitepress‑plugin‑tabs | 代码块多标签切换(Vue官方文档在用) |
vitepress‑markdown‑mermaid | 支持Mermaid流程图渲染 |
vitepress‑markdown‑katex | 数学公式KaTeX支持 |
vitepress‑markdown‑timeline | 时间线语法扩展 |
vitepress‑search‑algolia | 对接Algolia DocSearch,替代本地搜索,适合大站点 |
提示:所有Vite插件都可以直接在VitePress中使用,因为底层是Vite。
VitePress学习资源
- 官方指南(必看)
- 快速开始:https://vitepress.dev/zh/guide/getting‑started
- 默认主题配置:https://vitepress.dev/zh/reference/default‑theme‑config
- Markdown扩展:https://vitepress.dev/zh/guide/markdown
- 部署指南:GitHub Pages、Netlify、Cloudflare Pages、Nginx
- 官方配置参考:https://vitepress.dev/zh/reference/site‑config
- 社区中文博客:掘金、CSDN大量VitePress实战,包括:分目录sidebar、Decap CMS集成、大文档优化、CI部署。
VitePress适合的业务场景
✅ 技术项目文档、API手册、企业知识库、内部手册、个人笔记、轻量博客
❌ 不适合:十万级海量内容、需要原生版本管理、复杂动态业务网站