Skip to content

设置版本控制

Material for MkDocs 通过与外部工具的集成,使得部署多个版本的项目文档变得简单,这些工具为 MkDocs 添加了这些功能,例如 mike。在部署新版本时,旧版本的文档保持不变。

配置

版本控制

7.0.0 mike example-versioning

mike 使得部署多个版本的项目文档变得简单。它与 Material for MkDocs 原生集成,并可以通过 mkdocs.yml 启用:

extra:
  version:
    provider: mike

这将在页眉中渲染一个版本选择器:

版本选择器预览

查看版本控制示例以了解其工作原理 – mkdocs-material.github.io/example-versioning

为什么使用 mike?

mike 的构建理念是,一旦你为特定版本生成了文档,你就不应该再需要触碰该版本。这意味着你不必担心 MkDocs 中的破坏性更改,因为你的旧文档(使用旧版本的 MkDocs 构建)已经生成并保存在你的 gh-pages 分支中。

虽然 mike 是灵活的,但它的优化是将文档放在 <major>.<minor> 目录中,并为特别显著的版本提供可选别名(例如 latestdev)。这使得为你希望引导用户访问的文档版本创建永久链接变得简单。

切换版本时保持在同一页面

当用户在版本选择器中选择一个版本时,他们通常希望转到与之前查看的页面相对应的页面。Material for MkDocs 默认实现了这一行为,但有几个注意事项:

  • site_url 必须在 mkdocs.yml 中正确设置。有关示例,请参见 "发布新版本" 部分。
  • 重定向通过 JavaScript 进行,无法提前知道将重定向到哪个页面。

版本警告

8.0.0

如果你正在使用版本控制,你可能希望在用户访问任何非最新版本时显示警告。使用 主题扩展,你可以 覆盖 outdated

{% extends "base.html" %}

{% block outdated %}
  你正在查看的不是最新版本。
  <a href="{{ '../' ~ base_url }}"> <!-- (1)! -->
    <strong>点击这里查看最新版本。</strong>
  </a>
{% endblock %}
  1. 给定这个 href 属性的值,链接将始终重定向到你网站的根目录,然后再重定向到最新版本。这确保了你网站的旧版本不依赖于特定别名,例如 latest,以便后续更改别名时不会破坏早期版本。

这将在页眉上方渲染一个版本警告:

版本警告预览

默认版本由 latest 别名标识。如果你希望将另一个别名设置为最新版本,例如 stable,请在 mkdocs.yml 中添加以下行:

extra:
  version:
    default: stable # (1)!
  1. 你还可以将多个别名定义为默认版本,例如 stabledevelopment

    extra:
      version:
        default:
          - stable
          - development
    

    现在每个具有 stabledevelopment 别名的版本将不会显示版本警告。

确保一个别名与 默认版本 匹配,因为这是用户被重定向到的地方。

版本别名

9.5.23 false

如果你正在使用版本别名,并希望在版本号旁边显示版本别名,可以通过将 alias 选项设置为 true 来启用此功能:

extra:
  version:
    alias: true

使用

虽然本节概述了发布新版本的基本工作流程,但最好查看 mike 的文档 以熟悉其机制。

发布新版本

如果你想发布项目文档的新版本,请选择一个版本标识符,并使用以下命令更新设置为默认版本的别名:

mike deploy --push --update-aliases 0.1 latest

请注意,每个版本将作为你 site_url 的子目录进行部署,应该明确设置。例如,如果你的 mkdocs.yml 包含:

site_url: 'https://docs.example.com/'  # 推荐使用尾部斜杠

文档将发布到如下 URL:

  • docs.example.com/0.1/
  • docs.example.com/0.2/
  • ...

设置默认版本

在开始使用 mike 时,设置一个别名作为默认版本(例如 latest)是个好主意,并且在发布新版本时,总是更新别名以指向最新版本:

mike set-default --push latest

在发布新版本时,mike 将在你的项目文档的根目录创建一个重定向到与别名关联的版本:

docs.example.com docs.example.com/0.1