升级Hexo及NexT主题笔记

Hexo搭建博客差不多一年了,使用NexT主题,文章没写几篇,2017争取每周至少写一篇博客。今天对博客空间做了一次版本升级,由于原来初次配置博客时,站点配置文件主题配置文件没有分离,当时还修改了NexT主题部分源码,所以本次升级基本上是重新安装了一遍。

升级目标

  • Hexo版本由3.2.0升到3.2.2
  • NexT版本由5.0.0升到5.1.0
  • 主题配置文件分离(便于以后主题升级)
  • 集成Algolia搜索引擎

迁移步骤

安装Hexo,参考官方步骤

1
2
3
4
5
npm install hexo-cli -g
hexo init blog
cd blog
npm install
hexo server

安装NexT主题,参考官方文档

官方步骤很详细,这里不再描述,参考链接

迁移配置文件

站点配置文件迁移

通过文件对比迁移原有站点配置文件到新站点配置文件。

主题配置文件迁移

由于原来直接修改主题下的_config.yml配置文件,导致升级主题时不能直接pull,需要解决冲突问题,官方给出替代解决方案。基本思路是利用Hexo 3及以上版本提供的Data Files功能,将主题配置文件迁移到source/_data目录下。我是全新安装,所以将原来_config.yml拷贝一份到source/_data下,并重命名为next.yml。在将原有主题配置文件内容迁移到next.yml里。

9d018280d96e25f4/a52ce5dce6344a9f9ec8dc9f39f0cab6.png

集成Algolia搜索引擎

参考官方配置手册

到此,原来博客站点配置全部迁移完成,整个配置迁移遵循默认配置以新版本为准,自定义配置以老版本为准的原则。

迁移原有博客文章及资源文件

拷贝原来博客文件及资源文件到新博客下。

部署博客到GithubCoding

访问新版博客,基本效果和原来一样,如下图所示:
9d018280d96e25f4/b5ab2060b62f459c8bb4e9c1e3c8b210.png

但是有以下几个问题:

  • 国内IP可以正常访问,国外IP无法正常访问404 There isn’t a GitHub Pages site here.异常如下:

9d018280d96e25f4/5cc5631257f04475a298970c9a9c760b.png

  • Algolia关键字搜索正常,但是点击搜索结果跳转链接为http://www.itechq.com/undefined

  • NexT主题设置highlight_theme是属性后,代码高亮无效

解决问题

国外IP无法访问问题

我的博客同时托管GithubCoding两个平台,国内IP访问解析到Coding平台,国外IP访问解析到Github平台,Github平台访问报404是因为github pages需要一个CNAME文件来解析自定义域名,因此新建一个CNAME文件到source目录下,CNAME文件内容如下:

1
itechq.com

重新生成博客部署,国内、国外IP都能正常访问,问题解决。

Algolia搜索结果链接出现undefined问题

该问题原因是hexo-algolia默认下载的版本是0.1.0,该版本没有把post.path进行index,所以data.pathundefined。通过如下步骤解决:

  • 安装0.2.0版本的hexo-algolia

    1
    npm install hexo-algolia@0.2.0 --save
  • 找到站点目录下package.json,把hexo-algolia 版本改为^0.2.0

    1
    "hexo-algolia": "^0.2.0",

重新生成博客部署,搜索结果访问正常。参考链接

代码无法高亮问题

该问题原有是因为升级到新版本Hexo后,代码高亮默认是不做自动检测,从而导致失效。解决方法是修改你的站点配置文件,将 hilight.auto_detect 设置为 true:

1
2
3
4
5
highlight:
enable: true
line_number: true
auto_detect: true
tab_replace:

到此,整个博客升级完成。但是升级完成后,在构建博客时,构建时间很长,原来几秒钟构建完成,现在差不多要5分构建完成,目前没有找到原因,若哪位大神知道原因可告知一下。我的package.json文件内容如下:

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
{
"name": "hexo-site",
"version": "0.0.0",
"private": true,
"hexo": {
"version": "3.2.2"
},
"dependencies": {
"hexo": "^3.2.0",
"hexo-algolia": "^0.2.0",
"hexo-clean-css": "0.0.2",
"hexo-deployer-git": "^0.2.0",
"hexo-generator-archive": "^0.1.4",
"hexo-generator-baidu-sitemap": "^0.1.2",
"hexo-generator-category": "^0.1.3",
"hexo-generator-feed": "^1.2.0",
"hexo-generator-index": "^0.2.0",
"hexo-generator-seo-friendly-sitemap": "0.0.20",
"hexo-generator-sitemap": "^1.1.2",
"hexo-generator-tag": "^0.2.0",
"hexo-html-minifier": "0.0.1",
"hexo-renderer-ejs": "^0.2.0",
"hexo-renderer-marked": "^0.2.11",
"hexo-renderer-stylus": "^0.3.1",
"hexo-server": "^0.2.0",
"hexo-uglify": "0.0.3"
}
}

您的支持将鼓励我继续创作!