EasyBlog 說明
本博客系統通過構建工具生成純靜態
的博客網站,藉助GitHub Pages
,你可以在5分鐘內免費擁有個人博客。 它具有以下特點
- 生成純靜態網站,訪問速度極快
- 使用markdown格式來編寫博客內容
- 基於git代碼管理來存儲你的博客
- 使用CI工具來自動化部署你的博客站點
效果展示:NilTor's Blog
🎖️功能
- 主頁博客列表,支持搜索和分類和存檔篩選
- 自定義網站名稱和說明
- 隨系統變化的Light和Dark主題
- 移動端的自適應顯示
- TOC支持
- mermaid,nomnoml,Math的渲染支持
- 代碼高亮及複製支持
使用Github Page部署
Fork並配置GitHub Page
- 點擊
Fork
按鈕,並創建自己的倉庫。 並取消選擇 Copy the main branch only。 - 進入自己的GitHub倉庫,點擊
Actions
,啓用workflows。 - 點擊
Settings
,找到Pages配置,在Build and deployment 選項中選擇GitHub Actions
.
配置
你可以通過根目錄下的webinfo.json
,對博客基礎信息進行配置,如下所示:
{
"Name": "Niltor Blog", // 博客名稱,顯示在主頁頂部導航
"Description": "🗽 for freedom",// 說明,顯示在主頁頂部中間
"AuthorName": "Ater", // 作者名稱,顯示在博客列表
"BaseHref": "/blazor-blog/", // 子目錄
"Domain": "https://aterdev.github.io" // 域名,生成sitemap使用,不生成則留空
}
當你使用Github Page或使用IIS子應用部署時,需要調整BaseHref
。通常是你的項目名稱或子目錄名。
[!IMPORTANT]
注意,BaseHref
尾部的/
是必需的。如果你配置了自定義域名,並且沒有使用子目錄,請將BaseHref設置爲
/
。
修改後提交代碼,GitHub會觸發Action自動構建。
編寫博客
請使用任何你習慣的markdown編輯器編寫博客,唯一的要求是將博客內容放到Content
目錄下。你可以在該目錄下創建多級目錄。
發佈博客
你只需要正常提交代碼即可,github action會自動構建並最終發佈你的博客,發佈成功後可打開您的 GitHub Page 查看。
部署到其他服務
如果你不使用Github Page,那麼你也可以輕鬆的部署到其他服務。核心的步驟只需要兩步。
生成靜態內容
BuildSite
項目是用來將markdown轉換成html的,請在根目錄執行:
dotnet run --project .\src\BuildSite\ .\Content .\WebApp Production
其中.\Content
是你的markdown存儲目錄,.\WebApp
是生成的靜態站點目錄。
上傳到你的服務器
將WebApp
中的所有文件複製到你的服務器即可。
[!TIP]
根目錄下的publishToLocal.ps1
腳本可以自動完成構建和生成的操作,最終內容將在根目錄下WebApp
目錄中。如果你使用自動化部署,可參考.github/workflows中的腳本。
更新
上游代碼的更新以dev
分支爲準,你可以將dev
分支合併到你的dev
分支,以獲取最新的代碼更新。
main
作爲默認的構建發佈的分支,請不要合併到你的main
分支。
建議您使用dev
或其他自己的分支來編寫博客和自定義內容,然後再合併到main
分支以觸發自動構建。
二次開發
fork之後,你將擁有所有的自定義權限,因爲所有的源代碼都已經在你自己的倉庫中。
核心項目爲BuildSite
,用來生成靜態文件,其中包括將markdown文件轉換成html文件。
[!NOTE]
建議創建自己的分支來自定義開發內容,方便後續的合併。
開發環境
BuildSite
項目是一個.NET項目,你需要安裝.NET SDK 8.0。
此外,你可以安裝(可選)
- http-server,用來啓動本地靜態內容,以便調試。
- tailwindcss,用來生成css樣式內容。
- typescript,以便使用
tsc
命令。
運行項目
- 預覽項目
- 打開終端,在
WebApp
目錄下執行http-server
,然後在瀏覽器中打開http://127.0.0.1:8080
。
- 打開終端,在
- 生成靜態內容。
- 在根目錄下執行
dotnet run --project ./src/BuildSite ./Content ./WebApp
,以生成最新的靜態內容。 - 或者直接運行根目錄下的
build.ps1
腳本。
- 在根目錄下執行
- 刷新瀏覽器,可看到最新生成的內容。
[!TIP]
如果你使用Tailwindcss
,可在WebApp
下執行npx tailwindcss -o ./css/app.css --watch
。如果你使用
Typescript
,可在WebApp
下執行tsc -w
。
自定義主頁內容
主頁內容模板位於src\BuildSite\template\index.html.tpl
,其中包括以下變量:
模板變量 | 說明 |
---|---|
@ | 基礎路徑 |
@ | 博客名稱 |
@ | 描述 |
@ | 博客列表 |
@ | 側邊欄內容:分類和存檔 |
你可以按照自己的想法修改主頁的佈局和樣式。
[!NOTE]
請注意標籤中的id
屬性,js
腳本將依賴於這些id標識,如果你修改了這些標識,同時要修改js
腳本。
主頁內容包括博客的搜索和分類篩選功能,其功能代碼在WebApp\js\index.js
中。
關於博客列表和分類列表的自定義,你可以參考BuildSite
項目中HtmlBuilder.cs
文件中的GenBlogListHtml
和GenSiderBar
方法。
後續我們會提供更靈活的自定義方式。
自定義博客展示頁
博客頁內容模板位於src\BuildSite\template\blog.html.tpl
,其中包括以下變量:
模板變量 | 說明 |
---|---|
@ | 基礎路徑 |
@ | 頁面標題 |
@ | 博客內容 |
@ | 二級標題TOC |
關於博客展示頁的內容,你可以通過WebApp/css/markdown.css
來修改樣式,以及WebApp/js/markdown.js
來定義邏輯。
自定義代碼高亮
本項目使用ColorCode
來格式化markdown中的代碼內容,ColorCode
使用正則來匹配代碼內容。如果你需要對代碼高亮進行定義,你需要:
- 添加或修改正則規則,你將在
ColorCode.Core/Compilation/Languages
目錄下找到相應的語言定義,如果不存在,你可以添加新的語言支持。 - 如果是新添加的語言,需要在
ColorCode.Core/Languages.cs
中加載該語言。
[!IMPORTANT]
如果你修改了BuildSite
項目上中的代碼,需要重新生成靜態網站,才能看到最新效果。