什么是 MkDocs?
MkDocs 是一个快速、简单且优雅的静态网站生成器,专门用于构建项目文档。它使用 Markdown 文件作为源文件,并生成完全静态的 HTML 网站,非常适合托管在 GitHub Pages、GitLab Pages 或任何静态网站托管服务上。
主要特点
- 简单易用:使用纯 Markdown 语法编写文档
- 实时预览:内置开发服务器,支持实时预览
- 主题丰富:提供多种美观的主题选择
- 插件生态:丰富的插件扩展功能
- 快速构建:快速生成静态网站
MkDocs 的核心功能
1. 文档管理
- Markdown 支持:完全支持 Markdown 语法,包括表格、代码块、数学公式等
- 自动导航:根据文件结构自动生成导航菜单
- 搜索功能:内置全文搜索功能
- 多语言支持:支持国际化和多语言文档
2. 主题和样式
- Material Design:Material for MkDocs 提供现代化的 Material Design 风格
- 响应式设计:自适应各种设备和屏幕尺寸
- 暗色模式:支持明暗主题切换
- 自定义样式:支持 CSS 自定义和主题定制
3. 扩展功能
- 代码高亮:支持多种编程语言的语法高亮
- Mermaid 图表:支持流程图、时序图等图表渲染
- 数学公式:支持 LaTeX 数学公式渲染
- 标签和分类:支持内容标签和分类管理
快速开始
安装 MkDocs
安装 MkDocs 和 Material 主题
pip install mkdocs mkdocs-material
查看版本
mkdocs –version
1 2 3 4 5 6 7
|
``` bash
mkdocs new my-project cd my-project
|
创建后的项目结构:
1 2 3 4
| my-project/ mkdocs.yml docs/ index.md
|
基本配置
编辑 mkdocs.yml
配置文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| site_name: 我的文档网站 site_description: 项目文档描述 site_author: Your Name site_url: https://yourname.github.io/my-project/
theme: name: material language: zh palette: - scheme: default primary: indigo accent: indigo toggle: icon: material/brightness-7 name: 切换至暗色模式 - scheme: slate primary: indigo accent: indigo toggle: icon: material/brightness-4 name: 切换至明亮模式 features: - navigation.tabs - navigation.sections - navigation.expand - navigation.top - search.highlight - search.share - content.code.copy
nav: - 首页: index.md - 快速开始: getting-started.md - 用户指南: user-guide.md - API 参考: api-reference.md
plugins: - search: lang: zh - minify: minify_html: true
markdown_extensions: - pymdownx.highlight: anchor_linenums: true - pymdownx.inlinehilite - pymdownx.snippets - pymdownx.superfences: custom_fences: - name: mermaid class: mermaid format: !!python/name:pymdownx.superfences.fence_code_format - pymdownx.tabbed: alternate_style: true - tables - footnotes - pymdownx.critic - pymdownx.caret - pymdownx.keys - pymdownx.mark - pymdownx.tilde - attr_list - md_in_html
|
本地开发和预览
启动开发服务器
默认在 http://127.0.0.1:8000
查看网站,支持热重载,修改文件后自动更新。
构建静态网站
部署方案
1. GitHub Pages 部署
这个命令会:
- 构建网站到临时目录
- 将内容推送到
gh-pages
分支
- GitHub Pages 自动发布网站
2. GitLab Pages 部署
创建 .gitlab-ci.yml
文件:
1 2 3 4 5 6 7 8 9 10 11 12
| image: python:3.9
pages: stage: deploy only: - main script: - pip install mkdocs mkdocs-material - mkdocs build --site-dir public artifacts: paths: - public
|
3. Netlify 部署
- 在项目根目录创建
netlify.toml
:
1 2 3 4 5 6
| [build] command = "pip install mkdocs mkdocs-material && mkdocs build" publish = "site"
[build.environment] PYTHON_VERSION = "3.9"
|
- 将代码推送到 Git 仓库
- 在 Netlify 中连接仓库并自动部署
4. Docker 部署
创建 Dockerfile
:
1 2 3 4 5 6 7 8 9 10 11 12
| FROM python:3.9-alpine
WORKDIR /docs
COPY requirements.txt . RUN pip install -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["mkdocs", "serve", "--dev-addr=0.0.0.0:8000"]
|
requirements.txt
:
高级功能
1. 自定义主题
可以通过 extra.css
自定义样式:
1 2 3 4 5 6 7 8
| .md-header { background-color: #2c3e50; }
.md-tabs { background-color: #3498db; }
|
在 mkdocs.yml
中引用:
1 2
| extra_css: - stylesheets/extra.css
|
2. 添加评论系统
使用 Giscus 评论系统:
1 2 3 4 5
| extra: comments: provider: giscus repo_id: your-repo-id category_id: your-category-id
|
3. 添加统计分析
1 2 3 4
| extra: analytics: provider: google property: G-XXXXXXXXXX
|
常用插件推荐
文档增强插件
1 2 3 4
| pip install mkdocs-mermaid2-plugin pip install mkdocs-pdf-export-plugin pip install mkdocs-awesome-pages-plugin pip install mkdocs-macros-plugin
|
配置示例
1 2 3 4 5 6
| plugins: - search - mermaid2 - pdf-export - awesome-pages - macros
|
最佳实践
1. 文档结构建议
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| docs/ ├── index.md ├── getting-started/ │ ├── installation.md │ └── basic-usage.md ├── user-guide/ │ ├── configuration.md │ └── advanced-features.md ├── api/ │ └── reference.md ├── tutorials/ │ └── examples.md └── assets/ ├── images/ └── stylesheets/
|
2. 写作规范
- 使用清晰的标题层级
- 添加适当的代码示例
- 使用表格和列表组织信息
- 添加图片和图表辅助说明
- 保持文档更新和维护
3. 性能优化
- 压缩图片资源
- 使用 CDN 加速
- 启用缓存配置
- 优化构建脚本
参考资源
Material for MkDocs (squidfunk.github.io)
Nagi-ovo/Cherno-CPP-Notes: Cherno C++课程个人笔记 (github.com)
LeetCode Solutions (walkccc.me)
DocGuide (zjdoc-docguide.readthedocs.io)
基于 Material for MkDocs 搭建静态网页