不知不觉已经使用Hexo一年多了,在这期间只更新过主题,而框架一直停留在5.4.0没敢更新,一是我不会更新,二是群里小伙伴说更新容易炸掉,就咕咕咕了。

因为疫情上网课,最近几个月就比较闲,各种折腾,前段时间也曾想尝试更新Hexo,但是按照那些教程操作完全没效果又不知道哪里出了问题就又🕊️了。

今天又心血来潮想更新,但是我没有马上行动,我先去看了几个大佬的博客,如果大佬都一直没有更新那我这个小白也没必要更新了,在访问了几个博客之后发现Akilarの糖果屋升级了Hexo 6.1.0,于是就下定决心开始尝试更新了。

前期准备

备份!备份!备份!重要的事情说三遍,有较大的改动一定要备份,而且更新Hexo存在很多不可控因素,哪怕更新成功了也一定要保留一份备份以备不时之需。做好备份就可以开始更新框架了。。。

Hexo的升级

要升级就彻底一点,把Hexo的全部依赖都升级到最新版本,参考以下步骤吧。

npm的全局软件更新

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 清理NPM缓存
$ npm cache clean -f

# 全局安装版本检测、版本升级工具
$ npm install -g npm-check
$ npm install -g npm-upgrade

# 全局检测哪些模块可以升级,这里可以根据打印的提示信息,手动安装最新版本的模块
$ npm-check -g

# 全局更新模块
$ npm update -g

# 全局安装或更新Hexo的最新版本
$ npm install --global hexo

hexo当前目录的软件更新

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 进入博客的根目录
$ cd /blog-root

# 检测Hexo哪些模块可以升级
$ npm-check

# 删除package-lock.json
# rm -rf package-lock.json

# 更新package.json,一直回车即可
$ npm-upgrade

# 删除整个模块目录,这样可以避免很多坑
$ rm -rf node_modules

# 更新Hexo的模块
$ npm update --save

# 若出现依赖的问题,用以下命令检查一下,然后把报错的统一修复一下即可
$ npm audix

# 或者强制更新
$ npm update --save --force

检查方法

在上述步骤完成后,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
29
30
31
32
33
34
35
36
37
38
39
{
"name": "hexo-site",
"version": "0.0.0",
"private": true,
"scripts": {
"build": "hexo generate",
"clean": "hexo clean",
"deploy": "hexo deploy",
"server": "hexo server"
},
"hexo": {
"version": "6.2.0"
},
"dependencies": {
"hexo": "^6.2.0",
"hexo-abbrlink": "^2.2.1",
"hexo-deployer-git": "^3.0.0",
"hexo-generator-archive": "^1.0.0",
"hexo-generator-category": "^1.0.0",
"hexo-generator-index": "^2.0.0",
"hexo-generator-search": "^2.4.3",
"hexo-generator-tag": "^1.0.0",
"hexo-renderer-ejs": "^2.0.0",
"hexo-renderer-marked": "^5.0.0",
"hexo-renderer-pug": "^3.0.0",
"hexo-renderer-stylus": "^2.0.1",
"hexo-server": "^3.0.0",
"hexo-theme-landscape": "^0.0.3"
},
"devDependencies": {
"gulp": "^4.0.2",
"gulp-clean-css": "^4.3.0",
"gulp-fontmin": "^0.7.4",
"gulp-html-minifier-terser": "^6.0.1",
"gulp-htmlclean": "^2.7.22",
"gulp-replace": "^1.1.3",
"gulp-terser": "^2.1.0"
}
}

在其它开发机上,也可以依据已更新成功的package.json,直接通过npm install进行升级。

问题

至此Hexo的升级就结束了,但是不要着急将源文件上传到仓库,先在本地三连一下hexo clean && hexo g -d,如果在执行Hexo d的时候报错了,可以尝试删除.deploy_git文件夹里面的内容,这个是前面生成的网站项目内容,与当前的不兼容。

如果还报错也可能是没按照步骤来,本文章里每个指令都有它的作用,可以删除重来一遍。

个人建议使用自动部署的同学先在本地三连一下,然后访问github的链接预览一下,确认一下没什么大问题再覆盖掉仓库。

小结

这次更新整体来说还是很顺利的,没有遇到什么问题,只有中途不小心忘了切路径又重来了一遍,所以还是希望大家操作的时候能细心一点,毕竟,如果你真的会操作就不会看这篇文章了🤐。

参考文章