折騰了將近 2 週將「我是山姆鍋」這個部落格改用 Hexo 來編輯,雖然還是有不少文章格式有問題,大致上該有的都有了。

為什麼要換成 Hexo?

最近好不容易動了更新部落格的想法,但對於原先使用的 Pelican 已經變得不太熟悉,在重新學習 Pelican 與新的工具之間,山姆鍋自然是喜新厭舊地選擇另一套工具啦! (不過可不希望以後再來一次,中間曾一度想放棄)。

轉換文章格式

Hexo 本身已經大致可以符合山姆鍋撰寫部落格的需要,再加上有相當豐富的插件做靠山,其它的需求自然沒什麼問題。山姆鍋的文章多數是以 reStructuredText 格式撰寫,使用 Pandoc 這個工具轉換成 Markdown 格式後,文字的排列上都出現問題,整個轉換過程大部分的時間其實都是在調整亂掉的文章。

站內文章搜索功能

再來是原先使用 Tipue 的站內文章搜尋的功能,Hexo 上已經有人提供方案。基本上就是使用 hexo-generator-tipue-search-json 這個插件產生 Tipue 所需的搜尋索引檔案,設定好 搜尋頁面 就可以了。中間遇到 JQuery 跟 Tipue 版本相容性的問題,不過 Google 一下也不難找到解決辦法。

更換 markdown-it 作為渲染 (render) 引擎

由於常需要使用頁尾標記(footnotes),將 Hexo 內建的 Markdown 渲染引擎改為 markdown-it。 除了 markdown-it 本身,下列是額外安裝的插件:

  • markdown-it-abbr
  • markdown-it-checkbox
  • markdown-it-container
  • markdown-it-deflist
  • markdown-it-footnote
  • markdown-it-imsize
  • markdown-it-ins
  • markdown-it-mark
  • markdown-it-regexp
  • markdown-it-sub
  • markdown-it-sup

更換主題樣板

山姆鍋覺得原先的樣板沒有什麼不好,只是懶得自己轉換。選擇了 Tranquilpeak 這個主題也只是因為最接近自己的偏好。

英文跟中文中間留白

山姆鍋習慣中文與英文字中間有間隔,但有懶得自己手動加入空白字元,再加上也常常忘記,最好還是在產生網頁時能夠自動調整。不知道為何 Hexo 的 auto_spacing 設定沒有作用,或者很有可能是山姆鍋沒有正確設定。不管怎樣,後來是使用 Pangu 這個程式庫寫一個過濾器(filter) 解決。 下面是該過濾器的程式碼:

1
2
3
4
5
6
var pangu = require("pangu");

hexo.extend.filter.register("after_post_render", function(data) {
data.title = pangu.spacing(data.title);
data.content = pangu.spacing(data.content);
});

小結

如果說轉換過程中,山姆鍋有學到什麼的話,那就是:沒事別換工具處理已經解決的問題,那只是在做苦工啊!