前言
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文件了
參考
- docsify-file-catalog-action
- actions-demo