将 Hexo 从 2.8.3 更新到 3.1.1
前言
最近发现 Hexo 更新了,于是乎考虑也跟风更新一下 Hexo,便有了此文,记录一下更新的过程。
更新 Docker Image
因为我现在已经变成了一个不算狂热的 Docker 粉丝,且博主有各种强迫症,所以不想本地的 Node.js 环境被各种「污染」,于是乎可以用 Docker 封装的,都已经被我给 Docker 化了。同样的,Hexo 也未能幸免的被我给 Docker 化了。
如果大家想偷懒的话,可以直接使用我已经做好的 Hexo Docker 镜像。
1 | docker pull tommylau/hexo |
然后配合下面的脚本来使用,就可以好像本地使用 Hexo 一样了。
1 |
|
那么相比较原来的 Hexo Dockerfile,修改了什么呢?其实,只是将
1 | RUN npm install hexo@2.8.3 -g |
修改成了
1 | RUN npm install hexo-cli -g |
而已。囧rz,好吧,其实真的就是这么简单。当然,这只是说如何安装新版本的 Hexo,但是后面才是比较痛苦的。
更新旧的博客目录
当我进入旧的博客目录后,发现使用 hexo 命令,已经不能正常识别了。这个时候我发现,除了重新初始化以后,似乎并没有什么更好的解决办法了。于是乎,我运行了如下命令:
1 | hexo init |
得到了如下的提示:
1 | INFO Copying data to /hexo |
然后发现,好多文件都被修改了,比如 _config.yml
, package.json
还有 themes 里面的部分样式等等。
这个时候,就只能手动的对比各种文件了。因为我使用 git 仓库管理,所以可以直接看到文件的改动。如果你没有使用类似 git 之类的版本控制软件的话,强烈建议备份后,再执行升级操作。
根据自己的需要调整好各种文件和配置,比如 _config.yml
里面的 title
啊什么的。因为初始化以后,都是默认值,需要根据自己的实际情况重新再设置一次。
各种坑来了
GitHub, rsync 同步失效了
好了,都重新设置好了以后,应该可以正常使用了吧?试验一下 hexo generate
,嗯,妥妥的,没问题。
接着再来 hexo deploy
一下,what the huck?
1 | % hexo deploy |
GitHub 和 rsync 同步博客内容到服务器的方式失效了?!搬出万能的 Google,搜索后发现 Hexo 相关的 Issue 页面,根据用户反馈,使用 git
方式替换原来的 github
方式。
然后在命令行执行如下命令,增加 Deployer:
1 | hexo npm install hexo-deployer-git --save |
注意:我使用的是 Docker 版本,未使用 Docker 的同学,请移除命令行最开始的 hexo
命令。
再来执行一下 hexo deploy
1 | INFO Deploy done: git |
嗯,效果不错,看来可以正常使用了。
链接失效了
打开自己的网站,看看更新的成果。首页没有什么问题,很正常,随便找个链接打开看看。什么?提示 404 Not Found?这怎么可能?
重新生成和部署了几次,结果依旧,各种链接不正确。再次使用 Google 大杀器,找到了如下文章:Permalinks are generated incorrectly when relative_link=true。看来是相对路径引发的血案。将 _config.yml
中的 relative_link
修改为 false
后,问题解决。
总结
其实,我只是闲着无聊,才把 Hexo 从 2.8.3 版本升级到 3.1.1 版本的。就我这种入门级使用者的程度来说,并没有感觉到 2.8.3 跟 3.1.1 有什么明显的不同。也许是我用的功能都比较简单吧,不过感觉 3.1.1 版本在生成文件的时候,速度好像比 2.8.3 要快一点,当然,这也可能是我的错觉。
你所看到的这篇文章,就已经是在 Hexo 3.1.1 的基础上发布的了。喜欢追新的同学,勇敢地升级吧!