Hexo 是一個快速、簡單且功能強大的部落格架構。使用 Markdown 解析文檔,Hexo 能在幾秒内生成帶有自定義主題并內建各項功能的網站頁面。
本文将逐漸分享 GitHub Pages + Hexo 的個人部落格搭建方法。
零、準備工作
1. 使用個人 GitHub 建立倉庫,并配置 GitHub Pages
此倉庫用于存放個人部落格頁面,倉庫名必須使用 <GitHub使用者名>.github.io 格式。
倉庫建立完成後,可以在倉庫根路徑下建立一個名為index.html的靜态 HTML 檔案來驗證個人部落格搭建是否成功。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Someone's Blog</title>
</head>
<body>
<h1>Hello, Blog World ~</h1>
</body>
</html>
在<GitHub使用者名>.github.io倉庫對應的 GitHub Pages 設定頁面 (通路路徑為Settings -> Pages) 可以找到個人部落格的首頁通路位址:https://<GitHub使用者名>.github.io。
若能在浏覽器中正常通路該位址,即代表個人 GitHub Pages 搭建成功。
2. 安裝 Git 和 NodeJS
Hexo 基于 NodeJS 運作,是以在開始前,需要安裝NodeJS和npm工具。安裝教程可參考如下步驟。
筆者的本地環境為Windows 11 + PowerShell,包管理工具使用 Scoop,NodeJS 通過nvm管理,下述安裝步驟需要在PowerShell裡執行。
scoop install git # 安裝Git
scoop install nvm # 安裝 nvm
nvm list available # 檢視可用的 NodeJS 版本,這裡建議使用 LTS 版本
nvm install 16.18.0 # 安裝 NodeJS,我這裡安裝的是最新 LTS 版本 16.18.0
sudo nvm use 16.18.0 # NodeJS 版本使用 16.18.0,注意這裡需要管理者權限,可以先使用 scoop 安裝 sudo 這個工具
一、安裝 Hexo
1. 全局安裝hexo-cli工具
npm install -g hexo-cli
hexo -v # 檢視版本,目前最新版本為 4.3.0
2. 建立一個項目my-blog并初始化
hexo init my-blog
cd my-blog
npm install
3. 生成網頁檔案&本地啟動
hexo generate # 生成頁面,此指令可以簡寫為 `hexo g`
hexo server # 本地啟動,可簡寫為 `hexo s`
通過hexo g生成的頁面檔案在項目public目錄下;使用hexo clean指令可以清理生成的頁面檔案。當配置未生效時,建議執行清理指令。
4. 本地通路
浏覽器通路:http://localhost:4000/ 會看到一個比較簡陋的頁面。沒關系,接下來介紹如何更換主題。
二、安裝 & 配置主題
根據前兩小節的步驟,我們已經能夠通過本地通路部落格頁面了,但 Hexo 預設的主題不太好看。
好在官方提供了數百種主題任君選擇,可以根據個人喜好更換,具體可以點選(https://hexo.io/themes/)檢視。本文将主要介紹Fluid 主題的安裝與配置。
1. 安裝 Fluid 主題
官方提供了兩種安裝方式,這裡使用官方推薦的npm方式。
npm install --save hexo-theme-fluid
在部落格根路徑下建立_config.fluid.yml檔案,并将主題的./node_modules/hexo-theme-fluid/_config.yml檔案内容複制過去。
2. 指定主題
将如下修改應用到 Hexo 部落格目錄中的_config.yml:
theme: fluid # 指定主題
language: zh-CN # 指定語言,會影響主題顯示的語言,按需修改
3. 建立「關于頁」
首次使用主題的「關于頁」需要手動建立。
hexo new page about
建立成功後修改/source/about/index.md,添加 layout 屬性。修改後的檔案示例如下:
---
title: 标題
layout: about
---
這裡寫關于頁的正文,支援 Markdown, HTML
需要注意的是,layout: about必須存在,并且不能修改成其他值,否則不會顯示頭像等樣式。
4. 更新 Fluid 主題
通過 npm 安裝主題的情況,可在部落格目錄下執行指令:
npm update --save hexo-theme-fluidAML
5. 本地啟動
執行如下指令重新生成頁面,并啟動 Hexo 服務。
hexo clean
hexo g
hexo s
再次通過浏覽器通路 http://localhost:4000 , 便可以看到頁面變得美觀多了。
三、建立文章
修改_config.yml檔案。這項配置是為了在生成文章的同時,生成一個同名的資源目錄用于存放圖檔等資源檔案。
post_asset_folder: true
建立檔案名為my-blog-build-remark文章。
hexo new post my-blog-build-remark
設定文章的标題及其他中繼資料資訊。
---
title: 基于 GitHub Pages + Hexo 搭建個人部落格
date: 2022-10-16 19:42:53
tags: ['hexo','fluid']
---
如上指令執行成功後,在source/_posts/目錄下生成了一個 Markdown 檔案和一個同名的資源目錄。
在source/_posts/my-blog-build-remark目錄中放置一個圖檔檔案posts-file-tree.png,整體目錄結構如下(下為Shell語言):
$ source/_posts (main)> tree
.
├── hello-world.md
├── my-blog-build-remark
│ └── posts-file-tree.png
└── my-blog-build-remark.md
然後在文章的 Markdown 檔案裡,通過以下方式即可引用對應的圖檔。
{% asset_img posts-file-tree.png 目錄結構 %}
圖檔的引用方式也不隻一種,更多詳細介紹可參考官方文檔 (https://hexo.io/zh-cn/docs/asset-folders.html)。文章建立并編輯好之後,就可以通過hexo g && hexo s指令啟動服務,并在本地預覽文章。
四、配置指南
如無特殊說明,如下配置檔案一律預設為主題配置檔案_config.fluid.yml。
1. 頁面 title 修改
修改_config.yml檔案。
title: "請填寫你自己的部落格标題"
subtitle: ''
description: ''
keywords:
author: 請填寫你自己的署名
language: zh-CN
timezone: ''
2. 部落格标題
頁面左上角的部落格标題,預設使用站點配置_config.yml中的title。
此配置同時控制着網頁在浏覽器标簽中的标題,如需單獨差別設定,可在主題配置中進行設定。
navbar:
blog_title: "請填寫你自己的部落格标題"
3. 首頁 - Slogan(打字機)
首頁大圖中的标題文字,可在主題配置中設定是否開啟。這裡支援配置固定的text或者從遠端api實時擷取,優先級api > text。
index:
slogan:
enable: true
text: "Please type your slogan here."
api:
enable: true
url: "https://v1.hitokoto.cn/"
method: "GET"
headers: {}
keys: ["hitokoto"]
五、網頁通路統計
目前 Fluid 支援多種統計網站,本文僅介紹LeanCloud的配置。
使用 LeanCloud 之前,需要先注冊賬戶并建立應用(需實名認證),可自行前往官網完成。
在 【控制台 -> 應用 -> 設定 -> 應用憑證】頁面中找到對應的AppID、AppKey、REST API 伺服器位址等資訊填入主題配置中。
web_analytics: # 網頁通路統計
leancloud:
app_id: # AppID
app_key: # AppKey
# REST API 伺服器位址,國際版不填
# Only the Chinese mainland users need to set
server_url: # REST API 伺服器位址
# 開啟後不統計本地路徑( localhost 與 127.0.0.1 )
# If true, ignore localhost & 127.0.0.1
ignore_local: true
如無特殊需要,記得配置ignore_local: true,這樣 LeanCloud 在 localhost 域名下通路不會增加資料。
1. 展示 PV 與 UV 統計
頁腳可以展示 PV 與 UV 統計資料,目前支援兩種資料來源:LeanCloud與不蒜子。
footer:
statistics:
enable: true
source: "leancloud"
pv_format: "總通路量 {} 次"
uv_format: "總訪客數 {} 人"
2. 展示文章日期/字數/閱讀時長/閱讀數
post:
meta:
author: # 作者,優先根據 front-matter 裡 author 字段,其次是 hexo 配置中 author 值
enable: false
date: # 文章日期,優先根據 front-matter 裡 date 字段,其次是 md 檔案日期
enable: true
format: "LL a" # 格式參照 ISO-8601 日期格式化 See: http://momentjs.cn/docs/#/parsing/string-format/
wordcount: # 字數統計
enable: true
format: "{} 字"
min2read: # 估計閱讀全文需要的時長
enable: true
awl: 2
wpm: 60
format: "{} 分鐘"
views: # 浏覽量計數
enable: true
source: "leancloud"
format: "{} 次"
3. 文章評論功能
評論功能需要在主題配置中開啟并指定評論插件,這裡使用基于LeanCloud的Valine。
post:
comments:
enable: true
# 指定的插件,需要同時設定對應插件的必要參數
# Options: utterances | disqus | gitalk | valine | waline | changyan | livere | remark42 | twikoo | cusdis | giscus
type: valine
# Valine
# 基于 LeanCloud
# See: https://valine.js.org/
valine:
appId: # LeanCloud AppID
appKey: # LeanCloud AppKey
六、釋出 GitHub Pages
1. 安裝hexo-deployer-git。
npm install hexo-deployer-git --save
2. 修改站點配置_config.yml。
deploy:
type: git
repo: <repository url> # https://github.com/<GitHub使用者名>/<GitHub使用者名>.github.io.git
branch: [branch]
token: [token]
3. 生成站點檔案并推送至遠端 GitHub 倉庫。
hexo clean
hexo deploy
登入 Github,在庫設定(Repository Settings)中将預設分支設定為_config.yml配置中的分支名稱。隻需稍等片刻,個人部落格站點就會顯示在 Github Pages 中。
七、參考資料
- Hexo Docs:https://hexo.io/zh-cn/docs/
- Hexo Fluid 使用者手冊:https://fluid-dev.github.io/hexo-fluid-docs/
了解更多靈活開發、項目管理、行業動态等消息,關注我們LigaAI .
或前往 LigaAI- 智能研發協作平台(https://ligai.cn),線上申請體驗我們的産品,期待與關注開發者生态的您一起交流!