Migrate Hexo 2.x to 3.0


Hexo 3.x 有一些新功能,目前我還不知道有啥用,只不過現在用的 2.8.x 在 OS X 執行 codegen 時效能很差,所以想換個版本試看看是否有改善。

更新版本的方式主要是參考 Migrating from 2.x to 3.0

Migration Hexo 2.8.3 to 3.1.1

現在的版本資訊 hexo 2.8.3:

1
2
3
4
5
6
7
8
9
10
13:51:33 ~  hexo version
hexo: 2.8.3
os: Darwin 15.2.0 darwin x64
http_parser: 2.3
node: 0.12.1
v8: 3.28.73
uv: 1.0.2
zlib: 1.2.8
modules: 14
openssl: 1.0.1m

先備份 package.json, 然後新增 package.json 內容如下:

1
2
3
4
5
{
"hexo": {
"version": ""
}
}

更新步驟:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 切換到 hexo blog 路徑
cd completet
# 清除 hexo cache
hexo clean
# 安裝 hexo-cli
npm install hexo-cli -g
# 安裝 hexo
npm install hexo --save
# 安裝相關 generater
npm install hexo-generator-index --save
npm install hexo-generator-archive --save
npm install hexo-generator-category --save
npm install hexo-generator-tag --save
# 安裝 server,可以在 local 測試,不像 2.8, 3.0 server 要個別安裝
npm install hexo-server --save
# 安裝部署工具, 我是部署到 github
npm install hexo-deployer-git --save
# npm install hexo-deployer-heroku --save
# npm install hexo-deployer-rsync --save
# npm install hexo-deployer-openshift --save
# 更新其他 plugins
npm install hexo-renderer-marked@0.2 --save
npm install hexo-renderer-stylus@0.2 --save
npm install hexo-generator-feed@1 --save
npm install hexo-generator-sitemap@1 --save

更新後版本:

1
2
3
4
5
6
7
8
9
10
10:21:54 Blog ⑂ 1.0.0@hexo_3.1.x +  hexo version
hexo: 3.1.1
os: Darwin 15.2.0 darwin x64
http_parser: 2.3
node: 0.12.1
v8: 3.28.73
uv: 1.0.2
zlib: 1.2.8
modules: 14
openssl: 1.0.1m

調整 deploy 設定

type 從 github 改成 git.

1
2
3
4
deploy:
# type: github
type: git
repository: git@github.com:rickhw/rickhw.github.io.git

Hexo Plugins

Hexo 3.0 開始,用了 Slimmer Core Module 架構,所以把系統模組化了,官方網站提供了很多 Plugins 可以使用,也可以讓其他人來寫自己的 plugin,形成一種生態圈 (Ecosystem).

用 ejs 做 template engine

1
npm install hexo-renderer-ejs --save

markdown render engine

更換 markdown render engine: hexo-renderer-markdown-it

1
2
npm un hexo-renderer-marked --save
npm i hexo-renderer-markdown-it --save

但是 <!-- more --> 會失效,所以後來又恢復了。

Migrate 之後的問題

  • Code 的 line number 有問題,大概要修一下 theme
  • Category / Tag 大亂,出現一堆空內容的,可能要修 theme css 才行

最後覺得 3.1 還沒有發現特別好的地方,先 rollback 回去 2.8 了。

延伸閱讀 (站內)


Comments