为什么选择 MkDocs
写技术文档时,我们通常会在 VitePress、Docusaurus、MkDocs、Sphinx 之间挑选。MkDocs Material 兼顾了“写 Markdown 的丝滑体验”和“默认主题即是业界标杆”两件事:不用懂 React、Vue,也能写出交互友好的文档。更重要的是,它的配置文件精简易读,适合小团队快速搭建知识库和项目手册。
环境准备
- 安装 Python 3.9+,建议顺手安装
pipx方便管理命令行工具。 - 创建独立虚拟环境,避免和项目依赖混在一起:
python -m venv .venv
source .venv/bin/activate # Windows 使用 .venv\Scripts\activate
pip install --upgrade pip
pip install mkdocs-material
- 初始化骨架:
mkdocs new docs-site
cd docs-site
mkdocs serve # 默认 http://127.0.0.1:8000
MkDocs 会在 docs/ 目录下生成 Markdown 文件,并通过 mkdocs.yml 管理导航、主题和插件。
配置文件要点
以下是一个常用的 mkdocs.yml 示例:
site_name: Awesome Docs
theme:
name: material
language: zh
palette:
- scheme: default
primary: blue
accent: light blue
features:
- navigation.tabs
- navigation.sections
- content.code.annotate
markdown_extensions:
- admonition
- pymdownx.superfences
- pymdownx.tabbed:
alternate_style: true
plugins:
- search
- blog
- tags
nav:
- 🏠 概览: index.md
- 快速开始:
- 安装: getting-started/install.md
- 配置: getting-started/config.md
- 进阶:
- 主题定制: advanced/theme.md
- 部署: advanced/deploy.md
features中的选项可以开启目录分组、代码注释、粘性导航等 Material 主题特性。markdown_extensions建议启用pymdownx系列,支持代码标签、折叠块、键盘符号等增强语法。plugins里常见的还有minify,git-revision-date-localized,awesome-pages等,可根据项目体量再行添加。
Markdown 写作增强
Material 对 Markdown 语法进行了大量扩展,可以降低文档维护成本:
提示块:使用标准的 admonition 语法即可生成漂亮的提醒框。
!!! note "接口说明" 这里会展示接口返回的数据结构示例。标签页:通过
pymdownx.tabbed将多语言代码段组合在一起。=== "Python" ```py print("hello") ``` === "Go" ```go fmt.Println("hello") ```数据表格:搭配
pymdownx.tabular或直接使用 Markdown 表格,Material 会自动添加滚动和排序能力。插入 Mermaid:启用
pymdownx.superfences后,可直接书写流程图与时序图,文档即刻渲染。
自定义主题与品牌化
当需要加入品牌色、字体或组件时,最简方案是改写 docs/stylesheets/extra.css 并在配置中引入:
extra_css:
- stylesheets/extra.css
extra_javascript:
- javascripts/analytics.js
配合 mkdocs-material 的 theme.custom_dir 参数可以覆写部分模板,实现首页英雄横幅、页脚版权信息等定制化。记得把公共变量抽进 partials,避免每次升级主题时难以合并。
部署与持续集成
GitHub Pages:执行
mkdocs gh-deploy --force即可发布到<username>.github.io。在 CI/CD 中可以使用官方提供的 GitHub Actions workflow。内网发布:将
mkdocs build生成的site/目录交给 Nginx/OSS/CDN 即可。推荐在流水线中添加pip install mkdocs-material[imaging]提前生成图标、暗色主题资源。预览环境:使用
mkdocs serve -a 0.0.0.0:8000,让团队成员在局域网访问实时预览;配合 Docker 可以做到一行命令启动:docker run --rm -it -p 8000:8000 -v ${PWD}:/docs squidfunk/mkdocs-material
协同编辑流程
- 将
docs/配合 Conventional Commit 与 PR 检查流程管理,避免文档与代码脱节。 - 利用
mkdocs serve --dirtyreload获得实时刷新体验,写作效率显著提升。 - 为大型团队增加
markdownlint、typos等校验工具,保证行文风格一致性。 - 若文档与版本关联,使用
mike插件维护多版本站点,保留历史版本入口。
常用资源
- 官方文档:每个 feature 都有 demo 代码,直接复用。
- mkdocs-boilerplate 示例仓库:学习如何组织目录和导航。
- Diátaxis 文档写作方法论:帮助我们区分教程、解释、操作指南与参考资料,合理拆分文档结构。
- DocSearch:为公开站点申请免费全文检索服务,搜索体验对大型文档尤为重要。

