把 Hexo 更新到 4.0.0 的趣事分享
其實更新的不只是 Hexo 其它相關的套件也一併更新了!
名稱 | 更新前 | 更新後 |
---|---|---|
Hexo | 3.9.0 | 4.0.0 |
Hexo Next | 7.1.x | 7.4.2 |
hexo-deployer-git | 1.0.0 | 2.0.0 |
hexo-generator-archive | 0.1.5 | 1.0.0 |
hexo-generator-category | 0.1.3 | 1.0.0 |
hexo-generator-feed | 1.2.2 | 2.0.0 |
hexo-generator-index | 0.2.1 | 1.0.0 |
hexo-generator-searchdb | 1.0.8 | 1.1.0 |
hexo-generator-tag | 0.2.0 | 1.0.0 |
hexo-renderer-ejs | 0.3.1 | 1.0.0 |
hexo-renderer-marked | 0.3.2 | 2.0.0 |
hexo-renderer-stylus | 0.3.3 | 1.1.0 |
hexo-server | 0.3.3 | 1.0.0 |
基本上所有套件都更新了一輪,除了
hexo-generator-sitemap
本來就是最新版本的。
更新套件
運行
npm outdated
1
2
3Package Current Wanted Latest Location
... # 上面本來有一大排,但是沒截到
hexo-generator-feed 1.2.2 1.2.2 2.0.0 hexo-site因為我輸入
npm update
並沒有直接更新過期套件,應此我就一個一個更新。後續有查了一下這個方式並不是正確的更新套件方式。
有高手如果知道的話可以寄個 Email 教一下。運行
hexo s
本地預覽網站
問題發生
在更新 Hexo 到 4.0.0 的時候發現大部分有 fontawesome icon 的地方都變成直接把 html 原始碼了。
一開始的想法是先去找找影響的範圍,發現是 menu-items 的地方還有下方的選擇頁數的地方的 icons 變了,而這些東西都是 Hexo Next 的物件。
後來才想到可能是 Hexo 的渲染方式變了,因此想說會不會有人在 Hexo Next 提出 Issue,沒想到逛一下就被我翻到了。
https://github.com/theme-next/hexo-theme-next/issues/1217
NexT v7.4.2 之前的版本在 Hexo 4.0 下会出现图标无法显示的问题(因为 hexo-util 会强制转义),请更新到 v7.4.2,如果不了解 git tag 的使用方法,请跟随 master 更新.
原來是 hexo-util 會強制轉譯,只要更新到 v7.4.2 以上就可以了,所以我就更新到 v7.4.2 了。
開始更新 Hexo Next
把最新的 Hexo Next Clone 下來,並切到穩定版本。
1
2
3
4git clone https://github.com/theme-next/hexo-theme-next themes/next7
cd themes/next7
git checkout v7.4.2
cd ../../修改 Hexo 設定,根目錄的
_config.yml
,把theme: next
改成theme: next7
將原本
themes/next/_config.yml
的設定慢慢的套用到themes/next7/_config.yml
去確認沒問題後把
themes/next
東西搬走並用themes/next7
取代。按照之前的流程把網站建起來
如果你本來的 config 是放在 source/_data/next.yml
那你不用做上面的 3-4 步,但是比較需要注意一些雷。
- 參考
themes/next/_config.yml
逐步套用到source/_data/next.yml
關於 git submodule
為人詬病的是 git submodule 沒辦法指定 tag 只能指定 branch name
如果你目前的 hexo next repo 不是以 submodule 的形式存在你的專案,而你想要改用 submodule,你必須執行以下步驟。
- 把你曾經在 next 專案中修改過的任何設定,以 custom_file 的形式放到
source/_data
中 - 經過測試沒問題後把
themes/next
資料夾砍掉先進行一次 commit - 執行
git submodule add git@github.com:theme-next/hexo-theme-next.git themes/next
在開發時如果你要 穩定的版本
cd themes/next/
git checkout v7.x.x
# 選擇你要的版本cd ../../
- 繼續你平常的工作
遇到一些雷
- 原本 reward 中有
enable
選項,後來搬去reward_settings
了,所以如果reward
中還有enable
會導致錯誤。 - submodule 不能使用 tag 只能用 branch