前陣子覺得我似乎該開始練練文筆,像是寫點簡單的題解還有一些近況的分享,至少可以練習如何把事情描述清楚,雖然不知道會不會乖乖更新就是了。於是這幾天就開始研究怎麼架部落格,還有挑選各種東西。

靜態網頁產生器

這個部落格是 Host 在 GitHub 上,所以必須要是靜態網頁,而通常為了方便維護跟編寫,會用靜態網頁產生器把寫好的文章(這篇是用 Markdown 寫的)套上部落格的 Theme build 成完整的網頁。

由於我沒有很想要自己寫靜態網頁產生器,所以得用現成的;我也嚴重的不適合寫前端,所以基本上需要找別人寫的主題。於是第一步就是找到想要用的產生器還有給那個產生器用的 Theme。不幸的是我對前端極度挑剔,比較傾向簡潔風格,但又不希望太簡陋(品味不一定跟大家一樣就是了),所以這步驟花了我大多數的時間。

以下是幾個我有考慮過的生成器:

Jekyll

這應該是最古老的生成器,在 GitHub 上有的 star 數量也比後面要提到的兩者多很多,更棒的是 GitHub Page 原生支援 Jekyll,所以甚至可以直接 push 原始檔案上去讓 GitHub 幫忙 Build。 但是 Jekyll 是用 Ruby 寫的,聽說編譯速度極慢 (這樣在本機沒辦法快速的預覽),另外因為有以前的經驗,對維護好 Ruby 的套件有恐懼,所以 Jekyll 就直接不被考慮了。

Hexo

這是台灣人寫的歐~ Hexo 是用 NodeJS 寫的,套件的維護也是用 npm 在做。速度上比前者快了許多,套件管理理論上也比前者方便許多(感謝 node 的繁榮生態系)。有不少認識的人是使用 Hexo,我在最一開始也是打算使用這套的,不過因為怎麼樣都挑不到喜歡的 Theme,後來在實際管理套件的時候找不到好方法來設定每個套件(就他呈現一個沒設定就自然運作的狀況,讓我有點難掌控),還有 Hexo 的社群主要是華人,而我對於資料是中文的這點有點排斥,總覺得由全世界維護的東西品質會比較好。

Hugo

最後這個 Blog 選擇使用 Hugo 作為產生器。Hugo 標榜是全世界最快的靜態網頁產生器,實測上也是如此,平均每個頁面幾 ms 就產出來了。意外的是 Hugo 的 GitHub star 數量約是 Hexo 的 1.5 倍,但我以及許多身邊的人似乎都不曾聽過他。Hugo 已知的問題應該是很難另外安裝插件,畢竟是用 Go 寫的,生態圈本來就比不上 node,不過我想我應該也用不到什麼非原生的功能,所以這感覺就不成問題了,希望以後不會出什麼問題

Theme

挑選 Theme 的部份,我嘗試過了幾個 Hexo 的 Theme,也試過了幾個 Hugo 的 Theme,最後決定使用 Hugo 的時候也順便確定了使用現在這個 Theme。這個 Theme 極度符合簡潔風格,也原生支援夜間模式(深色背景),對 SEO 也有適當的優化。我花了大概兩天把看到的問題修一修,再把頁面做了一些調整之後就是現在這個樣子了。由於還是多少有寫前端的經驗,改 code 的部份不太成問題。

發布

發布方式有兩種選項,一種是本機 build 完之後直接 push 網站上去 GitHub,一種是 push 原始檔案上去,然後用 CI 網站幫忙 build 後丟回 GitHub。前者是比較簡單,但是每次都要人工 build,還要小心 push 的時候不要丟錯 branch 把原始檔案蓋掉。使用 CI 網站的話則不會有這些問題,還有附加的優點是只用瀏覽器也能編輯文章,因為不用自己 build。我選擇使用後者,用的是 Travis CI,設定調好之後每次就都只需要 Push,等個大概一分鐘就會收到 build 成功的通知,網站也自動更新了。

總結

經過各種嘗試之後總算是找到了一個喜歡的產生器還有看的順眼的 Theme,有什麼缺的功能基本上都還能自己補,網站也能順利用 CI 發布了,剩下的就是要乖乖寫文章啦,希望這不會是這個部落格的最後一篇文章,還有希望之後寫的文章會有人看XD