Hexo 安裝和佈署到 Github

Octopress 剛架設好後立刻使用 markdown 寫了一篇文章,滿心期待看到轉出來的成果,結果就是一連串格式不合無法轉出的錯誤發生。我現在使用的編輯是 Atom ,預覽呈現出來的排版都很美好,然而一旦要被 Octopress 轉出時,就會出現問題。無奈之下開始上 Github 查詢 issues ,這才發現 Octopress 目前開發進度有點處於停滯的情況,所以乾脆開始尋找另一套解決方案。就是本篇的 Hexo

將為數不多的文章改用 Hexo 產生後,呈現上果然有比較好些。雖然還需要經過一些微調,但對於純粹使用上來說,是已經足以。以下紀錄我的安裝過程。

安裝

參照 官網的文件 上提供了詳細的步驟,而且動作也比起 Octopress 來說簡單。基本需求只有:

  • Node.js
  • Git

Git 不用說,對程式開發者而言都是必裝的套件。而 Node.js 在目前使用的 Ubuntu 16.04 環境上沒有安裝,因此直覺得下 apt-get install nodejs 安裝。豈知之後要安裝 Hexo 就開始遇到麻煩。最後是照著官網建議的安裝 Node.js 方式才成功安裝。因此這邊就不誤人子弟,直接使用官網的方式安裝吧。

安裝 Node.js

我這邊使用 wget 方式:

1
$ wget -qO- https://raw.github.com/creationix/nvm/master/install.sh | sh

安裝完成後要重開終端機。接著在下:

1
$ nvm install 4

以上指令查一下是安裝版號 4.x ,裝好之號看 Node.js 版號是 v4.4.4 。

安裝 Hexo

安裝 Hexo 指令只須一行。

1
$ npm install -g hexo-cli

之後就可以開始使用囉。

建立

建立網站範本

Hexo 是透過指令來產生網站的範本,相比 Octopress 是先去 git clone 自己的 repo 下來做修改,簡潔不少。使用以下指令來建立範本:

1
2
3
$ hexo init <folder>
$ cd <folder>
$ npm install

建完之後會看到設定的資料夾下多了一些目錄和檔案。其中 _config.yml 是用來設定 Hexo 的配置,其他的目錄和檔案就請參考官網說明。

建立新文章

透過 Hexo 提供的指令一樣可以方便的建立出新文章樣本出來。

1
$ hexo new [layout] <title>

其中 [layout] 提供了三種布局。

佈局 路徑
post source/_posts/
page source/
draft source/_drafts/

post 是一般要建立新文章使用的指令。

page 可以在網站中產生新的頁面出來,存放其他種類文章。像是拿來開一個頁面做 “About” 介紹。

draft 可以用來當作草稿使用,佈署的時候會忽略這裡面的內容。需要另外下指令 hexo publish 來發表。此外預覽時可以加參數來呈現。

佈署

產生網頁

內容準備完成後,接下來就下指令來產生網頁。

1
$ hexo generate

以上指令會依據使用者提供的內容和設定,產生想要的網站內容。

佈署到 Github 上

在佈署之前,需要先在 _config.yml 裡設定要採取 git 模式佈署。設定如下:

1
2
3
4
5
deploy:
type: git
repo: <repository url>
branch: [branch]
message: [message]

repo 欄位上就填寫 Github repo 的 url 。

另外還須額外安裝 hexo-deployer-git

1
$ npm install hexo-deployer-git --save

接下來就可以透過 Hexo 一行指令完成佈署囉。

1
$ hexo deploy

另外如果想再產生網頁時同時佈署上去, Hexo 也有提供指令參數使用,不過我想還是先預覽看過再佈署上去比較明智。

1
2
$ hexo generate --deploy
$ hexo deploy --generate

完成

至此,我的網站就更新完成啦。真的和 Octopress 比起簡單快速不少。

不過 Octopress 的管理模式還是值得學習一下, Hexo 預設只會把產生的網站 commit 到指定的 branch 上,但是本身的內容並沒有提供方式來做版本控制。而這部份 Octopress 就會切出 master 和 source 兩個 branch 出來, master 用來放置管理網站內容,而 source 用來對自身做版本管理。接下來目標是參照這種模式把