前语
docsify 能够快速帮你生成文档网站。不同于 GitBook、Hexo 的地方是它不会生成静态的.html
文件,一切转化作业都是在运转时。
根据 docsify
官网的快速开端能够很快地就建立一个个人博客。
搭配 github pages 就能够拥有一个公网可拜访的静态博客。
网上关于如何运用docsify
和github pages
的文章网上已经有挺多的了,这儿就不做详细介绍。这儿主要是介绍如何运用github action
来生成文件目录。由于docsify
本身是一个静态网页,只需求生成一次index.html
就能够运转,所以本身是不支撑动态去显现文件目录。但是docsify
支撑自界说侧边栏,只需求在根目录增加一个_sidebar.md
和打开loadSidebar选项,侧边栏就会主动显现_sidebar.md
的内容。
咱们只需求在_sidebar.md
加上目录信息,
再搭配docsify-sidebar-collapse插件就能够显现以下的效果了:
原理
GitHub Actions 是 GitHub 供给的一种主动化东西,它能够协助你在 GitHub 库房中主动履行软件开发的作业流程。你能够运用 GitHub Actions 来构建、测验和布置你的代码。你也能够运用它来主动化其他的使命,例如发送电子邮件通知、创立问题和拉取恳求,甚至发布到 GitHub Pages 或其他的云渠道。
GitHub Actions 的作业流程是由一系列的使命(称为”actions”)组成的,这些使命能够在同一个虚拟环境中按照你界说的次序履行。每个使命都能够运转一个指令或许一个脚本,也能够运转一个你从 GitHub Marketplace 或许其他地方获取的预界说的action。
你能够在你的库房中创立一个
.github/workflows
目录来寄存你的作业流程文件。每个作业流程文件都是一个 YAML 文件,它界说了一个或许多个作业流程。当你的库房中发生一个特定的事件(例如 push、pull request 或许 issue)时,GitHub Actions 就会主动履行相应的作业流程。
如果运用github pages
来布置咱们的博客,就需求一个github库房,那这样咱们只需求运用github action
在代码推送时,都生成一次_sidebar.md
,这样就能够保证咱们库房上面的目录一直都是最新的。
_sidebar.md
:
- [README.md](./README.md)
- directory1
- [file1.1.md](./directory1/file1.1.md)
- [file1.md](./directory1/file1.md)
- directory2
- [file2.md](./directory2/file2.md)
- directory3
- [file3.md](./directory3/file3.md)
- [_sidebar.md](./_sidebar.md)
教程
在库房目录建立一个新文件.github/workflows/main.yml
on: [push] # 在push的时分履行
jobs:
add_sidebar_job:
runs-on: ubuntu-latest
name: job to add _sidebar.md
steps:
- uses: actions/checkout@v4 # 拉取代码
- uses: if-nil/docsify-file-catalog-action@main # 运用action生成_sidebar.md文件并推送到库房内
with:
github_token: ${{ secrets.GITHUB_TOKEN }} # GITHUB_TOKEN 需求有写权限
# include: '.*'
docsify-file-catalog-action
是一个用来生成_sidebar.md并推送到库房的action,有两个参数
inputs | 描绘 | 必须 | 默认值 |
---|---|---|---|
github_token | 用来推送_sidebar.md 到库房内,需求写权限 |
true | null |
include | 期望显现的文件列表(正则表达式) | false | .*.md |
需求检查一下github_token
是否有写权限,位置在库房的 Setting -> Actions -> General:
然后提交代码即可
git add .github/workflows/main.yml
git commit -m "add workflow"
git push
点击库房的Action按钮检查履行情况
一切正常的话就能够看到咱们的根目录有一个_sidebar.md
文件了