hexo升级和切换主题到Next

好久没管过hexo,今天升级hexo,切换为next主题 后,遇坑无数,记录一下。

之前一直使用的hexo 2.8.3,后来有台机器升级了node,这台机器上再使用hexo就有点问题。索性就都升级了。当前使用hexo 3.7.1

遇坑如下:

当hexo g 报错 Error: expected end of comment, got end of file

找找md 文件中应该是含有 {# ,需要使用raw包含起来为{#,或是使用三个` 符号包含起来

1
2
grep {# *.md -rn
# 即 {#需要改为 {% raw %}{#{% endraw %}

当hexo g 报错 mozjpeg/vendor/cjpeg ENOENT 等

缺少包安装啥

1
2
3
sudo apt install autoconf libtool nasm wget automake gcc
#
yum install wget autoconf automake gcc nasm libtool

然后,执行rebuild

1
2
3
4
npm rebuild mozjpeg  
npm rebuild gifsicle
npm rebuild optipng-bin
npm rebuild jpegtran-bin

当然也是可以使用 cnpm

hexo问题解答

使用Gitment 替代多说

使用 GitHub Issues 搭建评论系统Gitment

在next中只需要注册,并填写参数就行了
注册一个OAuth

将client_id 和 client_secret记下,新开一个专门存储评论的仓库,填入github_repo,填入对应自己github_user

使用next有点小问题

下载时没注意,直接git clone了next,也就是最新版。有点小问题,侧边栏失效。
比较v5.1.2 ,修改了next/layout/_partials/header.swig 为如下

1
2
3
4
5
6
7
8
9
10
11
12
{% for name, path in theme.menu %}
{% set itemName = name.toLowerCase() %}
<li class="menu-item menu-item-{{ itemName | replace(' ', '-') }}">
<a href="{{ url_for(name.split('||')[0]) | trim }}" rel="section">
{% if theme.menu_icons.enable %}
<i class="menu-item-icon fa fa-fw fa-{{ path.split('||')[1] | trim | default('question-circle') }}"></i> <br />
{% endif %}
{{ __('menu.' + name) | replace('menu.', '') }}
</a>
</li>

{% endfor %}

(实际上只是将原有url_for(path.split('||')[0]) 改为了url_for(name.split('||')[0]))

推翻上述说法,使用theme-next/hexo-theme-next中的新版

记录到一半发现next 最新版迁移了。先切换到最新版再看看

next 5.x 到 6.x 变化蛮大

iissnan/hexo-theme-next 到了theme-next/hexo-theme-next

谢谢大爷打赏,常来玩啊