MkDocs
MkDocs
背景
最近将博客从之前的Django动态网站改为使用MkDocs+MkDocs-Material搭建的静态网站。
主要原因有如下两点:
- 之前写博客是在Typora中写完markdown的文件,再通过Django的后台更新上去,每次更新博客比较麻烦。
- 需要一台云服务器独立部署,有成本。
后面在工作中接触到了MkDocs这个项目,能完美解决我的这两个痛点。就趁着最近工作变动之际,记录下相关问题。
官网
命令
mkdocs new [dir-name]
- Create a new project.mkdocs serve
- Start the live-reloading docs server.mkdocs build
- Build the documentation site.mkdocs -h
- Print help message and exit.
项目层级
mkdocs.yml # The configuration file.
docs/
index.md # The documentation homepage.
... # Other markdown pages, images and other files.
部署
MkDocs 部署文档
MkDocs-Material 部署文档
当前使用github pages服务部署静态文件,由于不想博客的源文件暴露出去,我将之分为两个项目,一个私有项目Blog-MkDocs存放博客源码,一个公开项目yinkh.github.io做github-pages服务。
自定义域名
GitHub Pages服务的自定义域名功能由CNAME文件实现,MkDocs对此做了特殊支持,在 docs_dir 目录下放置CNAME文件后,编译静态文件的时候会自动带上该文件。custom-domains
手动部署
在Blog-MkDocs项目下,手动向项目yinkh.github.io推送。
cd ..\yinkh.github.io
mkdocs gh-deploy --config-file ..\Blog-MkDocs\mkdocs.yml --remote-branch master
自动部署
参考 Github Pages和Actions,可实现写完博客后,推送至github,之后的工作完全由CI完成。
mkdocs material
项目地址:mkdocs-material
中文搜索支持
导航栏单行支持
-
下载代码,搭建开发环境 customization
-
按PR中的change修改源码 mkdocs-material/pull/3936
-
打包新的代码 building-the-theme
-
打包产物位于material文件夹下,需要下列文件移动至自己项目的overrides文件夹下的:
将material/base.html material/partials/header.html material/assets/javascripts/bundle.e39167e5.min.js material/assets/javascripts/bundle.e39167e5.min.js.map material/assets/javascripts/workers/search.c9d2aade.min.js material/assets/javascripts/workers/search.c9d2aade.min.js.map material/assets/stylesheets/main.39214a4c.min.css material/assets/stylesheets/main.39214a4c.min.css.map material/assets/stylesheets/palette.a6bdf11c.min.css material/assets/stylesheets/palette.a6bdf11c.min.css.map
base.html
文件中引用的bundle.js search.js main.css palette.css
重命名为对应的压缩文件。
mkdocs-material==9.1.11 出现搜索时导航栏不压黑的情况
src/assets/stylesheets/main/components/_tabs.scss:31
: