一直以來都是用 wordpress贱枣。隨著 WP 日漸臃腫监署,以及在喜歡上 Markdown 寫作之后,就一直想找個(gè)能對(duì) Markdown 支持完美的纽哥,輕量級(jí)的钠乏,并易于版本管理的博客系統(tǒng)。
在這種需求下春塌,Jekyll 落入了視線晓避。
Jekyll 是 GitHub 和 GitCafe 內(nèi)置支持的靜態(tài)網(wǎng)頁生成引擎,可定制化程度也高只壳∏喂埃看上去對(duì)我們程序猴子這種不折騰會(huì)死的物種非常合適,但是經(jīng)過一段時(shí)間的觀察和分析后吼句。感覺可能它并不是最佳選擇锅必。
然后我看到了 cnfeat 這篇 簡明Github Pages與Hexo教程。瞬間就被它吸引了惕艳。
選哪個(gè)
兩個(gè)引擎都支持 markdown搞隐,都可以利用 git 庫進(jìn)行管理驹愚。最終發(fā)布的都是靜態(tài)頁面。這一點(diǎn)沒什么大的差別尔许。相對(duì)而言么鹤,Jekyll 發(fā)展較早,相對(duì)比較成熟味廊,Hexo 是后起之秀蒸甜,但是發(fā)展迅速。
Jelly 是 github 的默認(rèn)推薦余佛。它的工作方式是把源文件上傳至 github 的特定分支柠新,然后 github 在發(fā)現(xiàn)有文件更新時(shí),在服務(wù)端重新編譯生成靜態(tài)網(wǎng)頁自動(dòng)部署至 master 分支辉巡。
Jekyll 的優(yōu)勢(shì)是發(fā)展比較成熟恨憎,因?yàn)槭枪俜酵扑],支持也比較好郊楣°究遥看上去對(duì)程序員來說也更加優(yōu)雅便于折騰。缺點(diǎn)是配置比較復(fù)雜净蚤,需要遵循一定的規(guī)范比如一定要放在 gh-pages 分支钥组。因?yàn)槭翘峤辉次募诜?wù)端生成,所以在內(nèi)容發(fā)生變化到前端呈現(xiàn)會(huì)有一定延遲今瀑。
Hexo 的原作者是一名臺(tái)灣的學(xué)生程梦。推出的目的就是為了提供更大的便利,更容易入手橘荠,更方便配置屿附。
實(shí)際上也是如此,Hexo 從安裝哥童、配置挺份、發(fā)布都非常簡潔。常用的命令記住 n g s d
四個(gè)字母就搞定贮懈。
Hexo 還有一個(gè)決定性的好處压恒,下文說。
總之最后我選擇了 Hexo错邦,在代碼庫中建立一個(gè)獨(dú)立的 hexo 分支用于存放源文件探赫。
雙線部署
hexo 可以同步推送到多個(gè)git庫,比如撬呢,在配置文件里這樣寫:
deploy:
type: git
message: "hexo deploy generated pages"
repo:
github: <github repo url>
gitcafe: <gitcafe repo url>
然后執(zhí)行部署命令伦吠,就可以同步部署到 gitcafe 和 github。
如果用 dnspod 來做實(shí)現(xiàn)雙線解析,瞬間就可以實(shí)現(xiàn)境內(nèi)境外雙線解析鏡像毛仪。這點(diǎn)非常爽搁嗓。不過這里有個(gè)坑,參見下一節(jié)箱靴。
坑
這里是一些大坑腺逛。估計(jì)如果看到Hexo的介紹后,想自己動(dòng)手試試看的都會(huì)遇到衡怀。
-
首先棍矛,無論部署到GitCafe還是GitHub,都是master分支抛杨。
gitcafe-pages, gh-pages 這樣的分支是用來給Jekyll在服務(wù)端生成靜態(tài)網(wǎng)站用的够委。
用hexo生成網(wǎng)站是在本地生成后部署靜態(tài)頁面,這時(shí)直接部署到master即可怖现。
-
然后茁帽,Hexo 現(xiàn)在最新的版本是3.0
config的設(shè)置項(xiàng)有所更改,包結(jié)構(gòu)也有變化屈嗤。
最坑的是潘拨,如果多點(diǎn)部署的話,會(huì)報(bào)錯(cuò)饶号≌角铮看了下應(yīng)該是 3.0 更新后的bug,在 github Hexo 項(xiàng)目上讨韭,已經(jīng)有人提了issue,看什么時(shí)候能解決吧癣蟋。
3.0 詳細(xì)的變化可以參考 github 上的文檔.
更新: 昨天 git deployer 更新到 0.0.4透硝,修正了該問題。參見作者的說明.
更新方法:編輯 package.json疯搅,把 hexo-deployer-git 的版本升級(jí)到 0.0.4濒生,然后
npm update
. -
遷移自 wordpress
用插件 hexo-migrator-wordpress 即可一鍵完成。比較郁悶的是幔欧,如果原文的標(biāo)題是中文罪治,那么這里所有的文件名都會(huì)被解析成形如 ab-cd-ef-gh-de-ty-ww-rt-as-cd-fg.md 這種形式。原因可以理解礁蔗,它首先將中文進(jìn)行編碼觉义,然后替換空格最終形成“slug”形式的permalink。但是看著實(shí)在很蛋疼浴井。
-
目錄(categories)
hexo 支持多目錄晒骇。但是……
如果你指定了多個(gè)目錄,比如
[建站心得,流水賬]
洪囤,那么最后呈現(xiàn)出的目錄列表可能是這個(gè)樣子的:建站心得5 流水賬5 流水賬1 流水賬1 流水賬1 ...
淚奔徒坡。所以還是老老實(shí)實(shí)用單category,結(jié)合標(biāo)簽云好啦瘤缩。
還碰過其他坑喇完,暫時(shí)記起來這么多。后面想起來或遇到新坑再更新剥啤。
寫作工具
當(dāng)然锦溪。你可以直接在簡書寫,然后復(fù)制到 Hexo 源文件目錄铐殃,這個(gè)跨平臺(tái)海洼。XD
Mac 平臺(tái)的話,強(qiáng)烈推薦 “Mou”富腊。
最后
詳細(xì)的 Hexo 安裝設(shè)置指南就不多說了坏逢。 cnfeat 的文章講得非常詳細(xì),即使小白也能按照所列的步驟一步步搭建起自己的一個(gè)靜態(tài)博客赘被。
只是有一點(diǎn)是整,弄這些玩意兒,翻墻技能還是要有一點(diǎn)的民假。否則一個(gè) npm 命令都會(huì)讓你抓狂浮入。
Enjoy it!
(題圖來自 Hexo 作者的個(gè)人主頁事秀。據(jù)說可以提高點(diǎn)擊率。XD)