由于前段时间把 Node.js 升级到了 v16.19.1, 导致 Hexo 3.9.0 和 Next 6.5.0 在该 Node.js 版本下有问题,生成的 html 文件为空。所以将 Hexo 和 Next 升级到与 Node.js 最新匹配的版本,即 Hexo 升级到 6.3.0, Next 升级到 8.17.0.
整体策略
在 Hexo 6.3.0 及 Next 8.17.0 版本下构建新项目,再将老项目的配置信息及 md 源文件同步到新项目中,验证没有问题之后,最后将配置文件及新模板文件拷贝到老项目即可。
说明: 由于新老版本中对同一个配置项的设置方法有可能已经改动,不能直接拷贝覆盖。
软件升级
卸载老版本 Hexo
将老版本的 hexo-cli 进行卸载。
1
| $ npm uninstall -g hexo-cli
|
升级 Hexo 新版本
Hexo 升级到最新的版本。
1
| $ npm install -g hexo-cli
|
初始化项目
以新版本初始化新项目 new_blog
.
查看版本信息,Hexo 已经升级到 6.3.0.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| $ hexo -v INFO Validating config hexo: 6.3.0 hexo-cli: 4.3.1 os: win32 10.0.17763 node: 16.19.1 v8: 9.4.146.26-node.24 uv: 1.43.0 zlib: 1.2.11 brotli: 1.0.9 ares: 1.18.1 modules: 93 nghttp2: 1.47.0 napi: 8 llhttp: 6.0.10 openssl: 1.1.1t+quic cldr: 41.0 icu: 71.1 tz: 2022f unicode: 14.0 ngtcp2: 0.8.1 nghttp3: 0.7.0
|
同步文件
同步博客文件
将老项目中 source 目录下的文件拷贝到新项目中,其结构如下所示:
1 2 3 4 5 6 7
| source ├─_posts ├─about ├─categories ├─images ├─tags └─404
|
说明:
- _posts: 存放博客 md 文件;
- about: 存放 “关于” 菜单首页文件;
- categories: 存放 “分类” 菜单首页文件;
- tags: 存放 “标签” 菜单首页文件;
- 404: 存放 “公益404” 菜单首页文件;
- images: 存放图片文件。
同步 Next 模板文件
从 github 官网下载 Next 8.17.0 文件. 解压缩存放到 themes 目录下,并将其命名为 next-8.17.0
.
同步配置信息
将老项目中 Hexo 及 Next 配置信息同步到新项目中。
同步 Hexo _config.yml
根据需要,将网站的基本信息,发布信息及模板信息同步到 Hexo _config.yml 文件中,模板指定为 next-8.17.0
, 即 themes 目录下 Next 模板的目录名。如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| title: subtitle: '' description: '' keywords: author:
language: zh-CN timezone: ''
theme: next-8.17.0
deploy: type: git repo: branch: master
|
同步 Next _config.yml
根据老项目的配置,将网站的风格,菜单,Sidebar 位置,访客统计及赞赏信息同步到新项目中,如下所示:
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 29 30 31 32 33 34 35 36
| scheme: Mist
menu: home: / || fa fa-home tags: /tags/ || fa fa-tags categories: /categories/ || fa fa-th archives: /archives/ || fa fa-archive about: /about/ || fa fa-user commonweal: /404/ || fa fa-heartbeat
sidebar: position: right display: post padding: 18 offset: 12
reward: wechatpay: /images/wechatpay.jpg alipay: /images/alipay.jpg
busuanzi_count: enable: true total_visitors: true total_visitors_icon: fa fa-user total_views: true total_views_icon: fa fa-eye post_views: true post_views_icon: far fa-eye
|
同步备案信息
由于我在页脚中加入了网站的备案信息,需要修改 themes\next-8.17.0\layout\_partials\footer.njk
布局文件,如下所示:
1 2 3 4 5 6 7 8
| <div class="copyright"> ... </div>
<div class="BbeiAn-info"> <a target="_blank" href="https://beian.miit.gov.cn/" rel="nofollow">粤ICP备 20210XXXXXXXX </a> <a target="_blank" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=自己的备案号" style="text-decoration:none;padding-left:30px;background:url(https://s1.ax1x.com/2018/09/29/ilmwIH.png) no-repeat left center" rel="nofollow">{{ __('粤公网安备 自己的备案号') }}</a> </div>
|
在版权模块下面加入备案信息。
验证并更新老项目
在新项目中重新生成页面,验证成功之后,将配置信息及模板文件更新覆盖老项目,更新的文件及目录有:
1 2 3 4 5
| new_blog ├─_config.yml ├─package.json └─themes
|
最后将文件推送到 git 便完成了升级流程
踩坑记录
在新版本中,如果博客 md 文件 title 字段包含特殊字符,如 % ,则生成操作会失败。修改的办法也简单,将特殊字符移除即可。