博客同步更新: https://keelii.github.io/2016/10/25/migrating-from-octopress-to-hugo-smoothly/git
自重新博客創建以來一直用 Octopress 這個博客框架來搭建靜態文章頁面。漂亮的默認主題、方便的發佈到 github page 等功能吸引了我github
但就在最近由於家裏的用 Macbook,恰好升級到了新版的 Sierria,杯具的是以前安裝的 Octopress bundle 都失效了。調試了好久還沒把環境搭建好,再加上以前發現 Octopress 的 Markdown 解析器老報錯,因而就決定要更換一個配置安裝簡單點的博客生成器了編程
在參考了這個網站上的各類生成器後 staticgen,果斷選擇了 Hugo。沒有什麼特殊緣由,下載安裝試用一下就明白了。Hugo 因爲是 Go 語言寫的,因此你只須要下載好官方給的二進制可執行文件就能夠了,不再用安裝各類依賴,而後各類換源什麼的亂折騰了。這一點就足以讓我轉入 Hugovim
因爲本身仍是比較喜歡 Octopress 默認的這套主題,因此在讀過 Hugo 開發文檔後,在嚴格尊重原主題的原則下修改了部分加強樣式,製作了一個適配 Hugo 的 Octopress 主題。雖然 Hugo 官方有一個適配 Octopress 的主題 hugo-octopress 可是對原主題改動太多,我並不喜歡markdown
Octopress 使用的文章描述頭是 yaml 格式的,須要轉換成 Hugo 的 toml,本身手動寫了個 NodeJS 腳本 來完成這個工做,基本上很輕鬆就完成了。注意:建議放在 content/archives
目錄下面,這樣的話原來的文件目錄和新的就是一致的了框架
再吐槽下 md 文件名,Octopress 默認是生成時間爲前綴的,如:2016-06-13-name.markdown
。 若是轉移到 Hugo 永久連接還要保持原來文件名格式的話就得把這個前綴幹掉(name.md
),這樣的話排序就亂了。在各類編輯器、文件夾中不按建立順序排序,看起來很彆扭也不方便編輯器
考慮到之間已經寫過不少文章了,搜索引擎都已收錄,因此要保持原來的文章連接格式不變。在 Hugo 配置文件裏面加上這段,使用文件名作文章永久連接:post
[permalinks] archives = "/:year/:month/:day/:filename/"
Octopress 默認的存檔地址是 archives
,這個咱們能夠直接在 Hugo 博客目錄 content 裏面新建一個目錄名爲 archives 就能夠了,之後新建文章都以這個 Section 爲準:hugo new archives/your-post-name.md
測試
Octopress 默認的是 atom.xml
,然而 Hugo 中默認的是 index.xml
。不過咱們能夠在 Hugo 中作個配置,和之間保持一致:網站
RSSUri = "atom.xml"
然而實際測試的時候在模板裏面調用 {{ .RSSlink }}
始終都返回 index.xml。手動把模板裏面的 RSS 連接改爲 {{ .Site.BaseURL }}atom.xml
竟然能生效?!這估計是 Hugo 的一個 bug。好在被發現了,要否則新老訂閱 RSS 地址不同事情就比較麻煩了
Octopress 默認的格式是 posts/2
,Hugo 中是 posts/2
一樣須要加個配置:
paginatePath = "posts"
這幾個概念主要在修改主題的時候能用到
相似 markdown 文件的配置描述,用來配置文章的標題、時間、連接、分類等元信息,提供給模板調用
+++ title = "post title" description = "description." date = "2012-04-06" tags = [ ".vimrc", "plugins", "spf13-vim", "vim" ] categories = [ "cat1", "cat2" ] +++
在 content 下面的一級目錄,一般有分類的概念,但只是文件夾維度的物理隔離
若是沒有爲文章指定 type 配置,文章默認就屬於當前屬的 Section,type 能夠在 Front Matter 中指定,而
Section 不能夠
新建文章時候的默認模板,會帶有指定的 Front Matter 頭
分類、標籤、系列這種描述文章屬性的都屬於 Taxonomy Terms
Hugo 確實是一個不錯的博客框架,配置簡單、功能強大,不少東西都以「慣例」默認提供了,好比內置 TableOfContents,用來寫博客足亦
不過因爲是 Go 語言寫的,不少人並不知道有這麼好用的一個東西,因此社區並非很好。這可能就是所謂的編程的幫派論吧