Hexo && Next升级


起因

很久没有更新博客, 想记录些东西,看到Hexo版本比较老了,就顺便升级一下。

升级的方式有很多种,建议使用增量升级的方式,简单来说就是直接在新的环境中安装最新版本的Hexo以及NexT主题,然后创建一个博客的框架,把旧的配置文件中自定义的内容复制到新的配置文件中,最后把文章拷到新的目录中。
此次升级的目标版本为:

hexo: 3.8.0
hexo-cli: 1.1.0
node: 10.13.0
hexo-theme-next: 6.6.0

旧的版本

Hexo: xxx

hexo-theme-next: 5.1.0

升级步骤

1
2
3
4
5
6
npm i hexo-cli -g
hexo init blog && cd blog
npm install hexo —save
npm install hexo-server --save
vim _config.yml theme/next/_config.yml
hexo clean && hexo g && hexo s

升级过程中问题记录

页面空白,只有侧边栏

有可能是用了motion, 解决办法修改Next的配置文件:

1
2
motion:
enable: false

也有可能是网络问题,刷新后会显示,但我用不到,所以就直接把这个关掉了。

导航栏不显示图标

原因是一般和font-awesome.css 文件有关,比如我遇到的情况是chrome浏览器使用了Stylish 插件,自定义了自体样式,所以导致了图标未能正常显示,解决办法是让自定义的样式不要修改class为icon的样式:

1
2
3
4
5
6
7
body {text-shadow: #707070 0.05px 0.05px 0.05px}
*:not([class*="icon"]):not(i)
{font-family:Arial,"Microsoft YaHei" !important;}
*:not([class*="icon"]):not(i)
{font-weight:400!important;}
@font-face {font-family: "Microsoft YaHei";src: local("Source Han Sans Bold")}
@font-face {font-family: "Arial";src: local("Source Han Sans Bold")}

导航栏里面是英文

如上图, Home等未被汉化, 原因是新的Next主题里的汉化文件名有变化:

1
2
3

-next/languages/zh-Hans.yml
+next/languages/zh-CN.yml

所以需要修改配置文件_config.yml

1
2
-language: zh-Hans
+language: zh-CN

导航栏的标签等不能点击

原因是改了hexo的配置文件, 不清楚的时候最好这里使用false:

1
relative_link: false

图床迁移

以前用的七牛图床,突然有一天就挂了,当然不至于是七牛挂了,而是针对我们这些免费用户发了个邮件

测试域名回收通知

感觉七牛做的不太地道,直接回收了域名,都没有办法续用,网上很多人在用静态博客的时候都用了七牛的图床,最近几个月看到好多人博客的图片挂掉了。七牛这么做让很多人不舒服,当然毕竟是免费使用,大家也无话可说,所以很多人干脆就换地方了。

如果要继续使用七牛还需要进行实名认证以及使用国内备案的域名,我不想弄,所以干脆换个地方,还好有办法可以把图片导出,参考这篇文章。找了找各种图床,最后还是决定用腾讯的COS,首先免费,再次速度还不错,参考腾讯云作为Hexo图床把七牛的图片都导入了腾讯。然后就是使用sed把文章里面的链接替换掉,好久没用sed, 在写替换命令时费了老长时间。打算把图片名字后缀修改一下,比如lnmp-450x300.jpg改为lnmp.jpg

我开始写的正则是这样:

1
sed 's/-[0-9]{3}x[0-9]{3}(.jpg|.png|.jpeg)/\1/g'

但sed需要的是这样,有的需要转义,有的不需要,真痛苦!

1
sed 's/-[0-9]\{3\}x[0-9]\{3\}\(.png\|.jpg\|.jpeg\)/\1/g'

主题定制

评论

静态博客的评论是个很大的问题,虽然也有很多可选的评论方案,但都有各自的缺点,打算先用用valine, 这个基于js的评论插件是依赖于国内的leancloud服务商,免费使用有一些限制,以后会不会出现问题也不得而知,反正不是关键的点,先用用看。

开启valineNexT v6里面很简单,直接修改主题的配置文件:

1
2
3
4
valine:
enable: true
appid: 填写从leancloud获取的appid
appkey: 填写从leancloud获取的appkey

有评论当然要有通知才好,找了找发现valine有扩展通知的方案,用起来感觉还不错,使用了QQ 邮箱接收,微信会自动通知。

后面打算再加个gitment, 虽然应该很稳定,但需要用户登录github账号,也不是很完美,而且同时有两个评论看着也不是很爽。

文章写的不是很详细,细节部分请参考相关文档以及参考链接

TODO:

  • 修改主题在首页文章下面加上tag, 类似于hexo-theme-yelee主题一样
坚持原创技术分享,您的支持将鼓励我继续创作!