Mkdocs入门
MkDocs的简单介绍
MkDocs(Markdown Documents)是一个快速、简单的静态网站生成器,用于将 Markdown 文档组织起来构建成有层次、美观的文档站点。
MkDocs 基于 Python 编写,也贯彻了 Python 里「简洁胜于复杂」的理念,与其他常见的静态网站生成器相比,无需繁琐的环境配置(如 Jekyll 涉及的 Bundler、Gems 等),所有配置都用只有简单的一个配置文件管理,并且当中配置项的内容也仅有一页文档。
安装前准备
MkDocs通过python的pip包管理工具进行安装,在安装前检查python和pip安装情况
检查python和pip版本
主流的Linux系统都默认安装了python,但不一定安装了pip,以下仅以Deepin系统为例
首先检查python版本,python有两个版本,一个是python2,目前版本停留在2.7,已经不再更新,另一个是python3,也就是当前我们所熟知的python。两者间有很大的差异,为方便区分,在代码中通常使用python3来调用python。
在终端输入python并回车,可以看到版本号显示的是python 2.7.16,这表明当前查询到的是python2的版本号
| |
按Ctrl+Z退出python2,在终端输入python3并回车,查询python3的版本,显示当前版本为python 3.7.3
| |
接下来检查pip的安装,退出python3,在终端输入pip --version,显示版本为pip 21.2.4,并标明通过python 3.7安装
| |
pip的安装
Deepin系统默认是没有安装pip的,pip安装方法如下
首先下载pip的安装脚本
| |
接着使用python执行脚本即可
| |
部分 Linux 发行版可直接用包管理器安装 pip,如 Debian 和 Ubuntu
| |
安装完成后在终端输入pip --version查看是否安装成功
MkDocs安装及初始化
安装MkDocs
MkDocs安装非常简单,只须执行
| |
MkDocs新建站点
按照官网的教程,在本地使用 mkdocs new <your-site-project-name> 即可新建站点项目,但是,MkDocs安装的目录不在Deepin的环境变量中,使得系统无法识别mkdocs这个命令,因此我们须要通过软链接将mkdocs添加到环境变量/usr/local/bin中
首先找到mkdocs所在位置,一般在/<用户主目录>/.local/bin目录下,.local文件夹是隐藏文件夹,需要在文件管理器的设置中选择显示隐藏文件才能看到,因此创建软链接
| |
完成之后,即可在/usr/local/bin目录中看到对应的链接文件了,
接下来就可以按官网教程来了,比如我的项目目录叫 mydocs,则新建项目
| |
执行完成后会在用户主目录下生成项目文件夹mydocs,可以看到项目文件夹内包含一个 docs 文件夹并包含一个名为 index.md 的 Markdown 文件;同时还有一个名为 mkdocs.yml 的文件。
docs文件夹就是用于存放我们所有的 Markdown 格式的文档内容,当然我们也可根据自己的需要进一步用文件夹归类划分,这也是 MkDocs 运行时默认的根路径。我们也可以后续手动指定修改成其他目录。mkdocs.yml该文件主要用于 MkDocs 的定制化配置的设置与管理。docs/index.md该文档内容是必须要有的,它是整个 MkDocs 构建的首页入口
使用mkdocs serve即可在本地预览MkDocs渲染的效果
| |
根据命令提示,浏览器访问127.0.0.1:8000或者localhost:8000即可预览效果
MkDocs 也存在许多可选配置,需要通过 mkdocs.yml 这一个 YAML 文件来进行设置和管理。因此我们需要简单了解一下 YAML 以及如何编写 YAML 文件。
添加站点信息(本地运行无需修改配置)
最开始在 mkdocs.yml 文件中填写的主要还是关于站点相关的信息。其中我们可以填写的有那么几个:
site_name:站点名称site_url:站点 URL 链接site_author:站点作者site_description:站点描述copyright:版权信息repo_url:站点仓库 URL
其中,只有两个必须要填写的配置项就是 site_name 站点名称和 site_url 站点 URL 链接。例如:
| |
但如果我们使用的是,mkdocs serve 来本地运行,那么无需填写 site_url,因为 MkDocs 会自动将其挂在本地的 http://127.0.0.1:8000/<your-site-project>。
除此之外的选项都是选填,如果填写了则 MkDocs 会将其作为元数据或元素渲染最后的 HTML 中。
添加文档路径
既然我们想要搭建的是一个文档站点,那么文档内容才是关键,除了对内容进行必要的排版校对之外,如何组织文档或是让文档以清晰有层次的结构展示也是必不可少的。
MkDocs 提供了让使用者能够自由安排文档层级结构或目录编排的设置,这将决定最后文档在站点中的编排效果如何。这里主要是通过 nav 项来进行配置:
| |
在该设置项中,使用了 YAML 所支持的列表语法,这和 Markdown 的无序列表语法是完全一致。默认情况下如果不指定键名,MkDocs 会自动根据列举的 Markdown 文件名字符串来确定最终该页面的名称如何;如果我们手动指定了键名,那么会优先以我们的键名为主,比如这里的 user-guide/usage 这一部分。
需要注意的是,前面对于 MkDocs 的快速介绍中我就有提到,MkDocs 默认会将项目目录下的 docs 目录作为默认的根路径,所以在 nav 设置中我们如果指定的是该目录下的其他内容,那么就是只需要填写相对路径。
这也是为什么在上述例子中的 user-guide 这一部分下的文档路径都不需要写成 docs/user-guide/XXXX.md 的原因。
同时,最终 MkDocs 也会根据 nav 配置的层级关系将内容的层级关系或包含关系一同渲染。
当然,如果你不想使用 MkDocs 的默认目录,那么你也可以通过修改 docs_dir 选项来指定对应的文件夹名称。但通常情况我们都不需要进行修改就已经能满足我们的基本需要了。
用扩展和主题武装 MkDocs
基本上我们只需要将站点信息和文档路径在 mkdocs.yml 文件中填写好就已经可以运行 MkDocs 了。不过 MkDocs 为使用者预留了可扩展的配置,方便使用者去添加其他开发者所开发的主题、扩展等功能。
Markdown 扩展
MkDocs 使用 Python-Markdown 库(Markdown 规范的 Python 实现)来渲染 Markdown 内容,因此 MkDocs 中对于 Markdown 内容渲染的扩展也是来自于此。我们可以在 Python-Markdown 的 官方文档 中浏览到目前所支持的 Markdown 扩展有哪些。
比如我在当中开启对于 Markdown 内容标题的固定标识符、脚注以及表格:
| |
除此之外,Python-Markdown 还支持一些来自于第三方的 Markdown 扩展,你能在 Python-Markdown 的 Github 仓库中的 Wiki 页面找到符合你需要的扩展,比如支持数学公式、emoji 表情、增强 Markdown 语法等。
但这些第三方扩展都还是需要通过 pip工具(安装 Python 解释器时会自带)来进行安装,安装之后在 mkdocs.yml中的markdown_extension部分继续追加。
这里我下载了一个名为 markdown-checklist的扩展,使我的 Markdown 文档内容支持清单列表的预览样式。
| |
安装完成后将其添加到 markdown_extension 中,注意,这里是需要安装插件对应文档的名称来填写包含相应的 makeExtension 属性的模块或继承了 Markdown 库中 Extension 的类,所以我就填入了 markdown_checklist.extension 这一模块:
| |
最后运行 MkDocs 后就可以看到其对应的效果了。