博客升级-hexo,next

因为要将评论系统从Disqus切换为Valine,新的评论系统Valine仅支持latest版的next主题,于是,在更换系统前,需要将next主题从5.1.1升级到最新的6.4.0。于是,博主顺带地将hexo从版本3.2.0升到3.7.1。

hexo升级

升级hexo-cli即可

1
npm i hexo-cli -g

升级完成后,查看hexo的版本,可看到版本升到3.7.1了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
➜  lily-blogs hexo version
hexo: 3.7.1
hexo-cli: 1.1.0
os: Darwin 17.7.0 darwin x64
http_parser: 2.7.0
node: 8.9.0
v8: 6.1.534.46
uv: 1.15.0
zlib: 1.2.11
ares: 1.10.1-DEV
modules: 57
nghttp2: 1.25.0
openssl: 1.0.2l
icu: 59.1
unicode: 9.0
cldr: 31.0.1
tz: 2017b

next主题升级

next主题升级,因为我是从5.x直接升级到6.x,2个版本之间改变了很多东西,比如评论系统valine就是在后面才支持的。所以,笔者建议,各位按照官方说明进行更新。但,在这里重点说明一下我踩过的坑,搞了2天之久,希望如果你遇到相同的问题,这篇文章能提供方法。

首选,概览下官方说明文档,你可以注意到一个字眼数据文件,我就是采用这个方法升级的。因为,这种方式可以让后续的所有主题相关的更新,只需要修改一个地方就可以了,不用去管主题文件下的config.yml。

github上的升级中文文档
数据文件

提示:

  • 请确认自己的hexo版本在3.0以上才能使用数据文件,如果不是,请升级。
  • 升级前,请将主题文件夹下的_config.yml备份

一、升级前,配置好原本的数据文件

  1. 在你站点的 hexo/source/_data 目录创建一个 next.yml 文件(如果 _data 目录不存在,请创建之)

  2. 在 next.yml 中设置override 选项为 true,如果next.yml是空的,就输入override:true

  3. 从 next/_config.yml 配置文件中复制所有的 NexT 主题选项到 hexo/source/_data/next.yml 中

  4. 在站点的 hexo/_config.yml中需要定义 theme: next 选项(如果需要的话,source_dir: source)

  5. 使用标准参数来启动服务器,生成或部署(hexo clean && hexo g -d && hexo s)

此时,执行hexo clean && hexo s, 确保本地跑起来没有异常。

二.升级

  1. 之前的自定义CSS配置,统一放在在 next/source/css/_custom/ 和 next/source/css/_variables/ 中。

  2. 之前的自定义的排布配置,它们应在 next/layout/_custom/* 中。

  3. 克隆新的 v6.x 仓库到任一异于 next 的目录(如 next-reloaded)

    1
    $ git clone https://github.com/theme-next/hexo-theme-next themes/next-reloaded
  4. 在 Hexo 的主配置文件中设置主题

    1
    theme: next-reloaded

如此,博主们根本不用修改原有的next主题文件夹,直接采用把next6.x的主题当新的主题用,这样,如果不喜欢新主题,把theme改回next即可。

  1. 注意,此时并没有执行hexo s,查看效果!!因为next6.x版本的_config和5.x的改变比较大!!!
    所以我们要对照着6.x的_config.yml,即next-reloaded/_config.yml,修改hexo/source/_data/next.yml,让next.yml的代码风格(格式)和_config.yml的一样,这样字段才能被程序识别。
    否则,跟我一样,报错:
    Unhandled rejection TypeError: path.substring is not a function
    很难找到根本原因,差点想重新部署博客了。

  2. 执行hexo clean && hexo s查看效果,如果无误,执行hexo d部署。

至此,升级就大功告成了。

0%