跳转至

MkDocs + Material 主题文档网站

一句话概述:MkDocs 是 Python 写的静态文档生成器,配合 Material 主题可以快速搭建漂亮的项目文档网站,写 Markdown 就能发布专业文档。

核心知识点

概念白话解释
MkDocs文档生成器 = 把 Markdown 文件变成网站
Material 主题好看的皮肤 = 谷歌 Material Design 风格
mkdocs.yml配置文件 = 控制网站结构和外观
nav导航 = 定义左侧菜单结构
plugins插件 = 扩展功能(搜索、标签等)
gh-deploy一键部署 = 推到 GitHub Pages

安装配置

# 创建虚拟环境(推荐)
python -m venv docs-env                               # 创建虚拟环境
source docs-env/bin/activate                          # 激活环境

# 安装 MkDocs + Material 主题
pip install mkdocs                                    # 安装 MkDocs 核心
pip install mkdocs-material                           # 安装 Material 主题(v9.7+)

# 验证安装
mkdocs --version                                      # 查看版本

快速开始

# 创建新项目
mkdocs new my-docs                                    # 生成项目骨架
cd my-docs                                            # 进入项目目录

# 项目结构
# my-docs/
# ├── docs/                                           # 文档目录
# │   └── index.md                                    # 首页
# └── mkdocs.yml                                      # 配置文件

# 启动开发服务器
mkdocs serve                                          # 本地预览(http://127.0.0.1:8000)
mkdocs serve -a 0.0.0.0:8080                          # 指定端口

配置文件 mkdocs.yml

# 站点基本信息
site_name: 我的项目文档                                # 网站标题
site_url: https://example.com                         # 网站地址
site_description: 项目技术文档                          # 网站描述
site_author: 彭文强                                    # 作者

# 使用 Material 主题
theme:
  name: material                                      # 指定 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.instant                              # 即时加载(SPA 体验)
    - navigation.tabs                                 # 顶部标签页导航
    - navigation.sections                             # 侧边栏分组
    - search.suggest                                  # 搜索建议
    - search.highlight                                # 搜索高亮
    - content.code.copy                               # 代码复制按钮
    - content.tabs.link                               # 内容标签页联动

# 导航结构
nav:
  - 首页: index.md                                     # 首页
  - 快速开始:                                          # 分组
    - 安装: getting-started/install.md
    - 配置: getting-started/config.md
  - API 参考:                                          # 另一个分组
    - 核心模块: api/core.md
    - 工具函数: api/utils.md

# 插件
plugins:
  - search:                                           # 搜索插件(内置)
      lang: zh                                        # 中文搜索
  - tags                                              # 标签插件

# Markdown 扩展
markdown_extensions:
  - pymdownx.highlight:                               # 代码高亮
      anchor_linenums: true                           # 行号锚点
  - pymdownx.superfences                              # 代码块增强
  - pymdownx.tabbed:                                  # 内容标签页
      alternate_style: true
  - admonition                                        # 提示框(Note/Warning 等)
  - pymdownx.details                                  # 可折叠内容
  - attr_list                                         # 属性列表
  - md_in_html                                        # HTML 中写 Markdown
  - toc:                                              # 目录
      permalink: true                                 # 锚点链接

Markdown 增强语法

<!-- 提示框(Admonition) -->
!!! note "注意事项"
    这是一个注意事项提示框。

!!! warning "警告"
    这是一个警告提示框。

!!! tip "小技巧"
    这是一个技巧提示框。

<!-- 可折叠 -->
??? example "点击展开示例"
    折叠的内容在这里。

<!-- 代码块 + 标题 + 高亮行 -->
```python title="example.py" hl_lines="2 3"
def hello():
    name = "MkDocs"          # 高亮行
    print(f"Hello {name}")   # 高亮行
print("Hello")
echo "Hello"
## 构建与部署

```bash
# 构建静态网站
mkdocs build                                          # 生成 site/ 目录

# 部署到 GitHub Pages(一键)
mkdocs gh-deploy                                      # 自动推到 gh-pages 分支

# 使用 GitHub Actions 自动部署
# .github/workflows/docs.yml
# GitHub Actions 自动部署配置
name: Deploy Docs
on:
  push:
    branches: [main]                                  # main 分支推送时触发
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4                     # 拉取代码
      - uses: actions/setup-python@v5                 # 安装 Python
        with:
          python-version: '3.12'
      - run: pip install mkdocs-material              # 安装依赖
      - run: mkdocs gh-deploy --force                 # 部署

常见报错

报错原因解决
Config file 'mkdocs.yml' does not exist不在项目根目录cd 到有 mkdocs.yml 的目录
Theme 'material' not found没装 Material 主题pip install mkdocs-material
Page not found in nav导航中引用了不存在的文件检查 nav 路径和文件名
Error reading pageMarkdown 语法错误检查文件编码(用 UTF-8)
Port already in use端口被占用mkdocs serve -a 0.0.0.0:8080

速查表

# 项目管理
mkdocs new <name>                                     # 创建新项目
mkdocs serve                                          # 本地预览
mkdocs build                                          # 构建网站
mkdocs gh-deploy                                      # 部署 GitHub Pages

# 常用 Material 主题功能
# palette: 颜色方案(支持明暗切换)
# features: 导航增强(instant/tabs/sections)
# plugins: 搜索/标签/博客
# extensions: 代码高亮/提示框/标签页

# 目录结构约定
# docs/           → 文档源文件
# docs/index.md   → 首页
# site/           → 构建输出(.gitignore)
# mkdocs.yml      → 配置文件