How to set up a blog using Hexo and Github
Installation hexo-cli
1 | npm install -g hexo-cli |
Setup
- 在 github 上建立一個 private repository,用作儲存 blog 的 source。New Repository
- 再建立一個 public repository 是 github pages 用作 static website
1 | hexo init blog |
Modify package.json
可以加入 debug
,用作 run server 並且顯示 draft
1 | { |
Configuration
詳細可以參考官方文件
1 | # Site |
CNAME
建立一個名為 CNAME
file,用作定義 Github pages
custom domain
1 | echo 'blog.seancheng.space' > ./source/CNAME |
Deployment
使用 Github Action
部署到 Github pages
建立一對 rsa key
1
ssh-keygen -t rsa -b 4096 -f blog-deploy-key -C blog
在
Github pages
repository 中的Settings
->Deploy keys
新增上一步驟產生出來的公鑰,名為HEXO_DEPLOY_PUB
,記得勾選Allow write access
在 blog 的 private repository 中的
Settings
->Secrets
新增私鑰,名為HEXO_DEPLOY_PRI
在 blog 的 private repository 中新增
workflows
yaml file1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34# .github/workflows/main.yml
name: Deploy
on: [push]
jobs:
build:
runs-on: ubuntu-latest
name: A job to deploy blog.
steps:
- name: Checkout
uses: actions/checkout@v1
with:
submodules: true
# Caching dependencies to speed up workflows. (GitHub will remove any cache entries that have not been accessed in over 7 days.)
- name: Cache node modules
uses: actions/cache@v1
id: cache
with:
path: node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Install Dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: npm install
# Deploy hexo blog website.
- name: Deploy
id: deploy
uses: sma11black/[email protected]
with:
deploy_key: ${{ secrets.HEXO_DEPLOY_PRI }}
How to use
以下使用 command line
New
draft
也可以改成 post
或是其他的
1 | hexo new draft "${YOUR_POST_TITLE}" |
Publish
publish
其實就是將 draft
移動到 post
中
1 | hexo publish "${YOUR_DRAFT_TITLE}" |
Deploy
設定完 Hexo
的 deploy
後,可以直接使用 command line
進行部署
1 | npm run deploy |