hexo版本升级还是很简单的,先切到hexo目录,使用npm i hexo-cli -g升级全局hexo,接下来再使用npm-check、npm-upgrade,npm-update升级相关依赖。
正式升级前使用hexo version查看下当前版本:
$ hexo version
INFO Validating config
INFO ==================================
███╗ ██╗███████╗██╗ ██╗████████╗
████╗ ██║██╔════╝╚██╗██╔╝╚══██╔══╝
██╔██╗ ██║█████╗ ╚███╔╝ ██║
██║╚██╗██║██╔══╝ ██╔██╗ ██║
██║ ╚████║███████╗██╔╝ ██╗ ██║
╚═╝ ╚═══╝╚══════╝╚═╝ ╚═╝ ╚═╝
========================================
NexT version 8.13.1
Documentation: https://theme-next.js.org
========================================
hexo: 5.4.2
hexo-cli: 4.3.0
os: darwin 22.1.0 13.0.1
node: 12.14.1
v8: 7.7.299.13-node.16
uv: 1.33.1
zlib: 1.2.11
brotli: 1.0.7
ares: 1.15.0
modules: 72
nghttp2: 1.40.0
napi: 5
llhttp: 2.0.1
http_parser: 2.8.0
openssl: 1.1.1d
cldr: 35.1
icu: 64.2
tz: 2019c
unicode: 12.1
使用npm i hexo-cli -g升级全局hexo
$ npm i hexo-cli -g
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: 'hexo-cli@4.3.1',
npm WARN EBADENGINE required: { node: '>=14' },
npm WARN EBADENGINE current: { node: 'v12.14.1', npm: '8.19.2' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: 'abbrev@2.0.0',
npm WARN EBADENGINE required: { node: '^14.17.0 || ^16.13.0 || >=18.0.0' },
npm WARN EBADENGINE current: { node: 'v12.14.1', npm: '8.19.2' }
npm WARN EBADENGINE }
...
通过输出内容发现node版本过低导致升级失败,所以先升级node版本,需要的最低node版本是v14.17.0,直接nvm install v14.17.0升级node,升级完成后再次执行npm i hexo-cli -g。再次执行hexo verson就可以看到升级到6.3.0版本了。
$ hexo version
INFO Validating config
hexo: 6.3.0
hexo-cli: 4.3.1
os: darwin 22.1.0 13.0.1
node: 16.20.0
v8: 9.4.146.26-node.26
uv: 1.43.0
zlib: 1.2.11
brotli: 1.0.9
ares: 1.19.0
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
接下来依次执行以下命令升级依赖包:
# 安装npm-check 如果之前安装过可以跳过
$ npm install -g npm-check
# 检查需要升级的依赖
$ npm-check
# 安装npm-upgrade 如果之前安装过可以跳过
$ npm install -g npm-upgrade
# 更新package.json
$ npm-upgrade
# 更新依赖
$ npm update --save
升级完成后,可以使用hexo clean、hexo g、hexo s看下效果,如果一切正常那么恭喜升级成功了。非常不幸楼主这里执行hexo clean直接报下面这个错误:
$ hexo clean
INFO Validating config
ERROR Script load failed: node_modules/hexo-theme-next/scripts/helpers/engine.js
Error: Cannot find module 'css'
Require stack:
- /Users/vector/dev/book/hexotest/node_modules/hexo-theme-next/scripts/events/lib/utils.js
- /Users/vector/dev/book/hexotest/node_modules/hexo-theme-next/scripts/helpers/engine.js
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:1026:15)
at Function.Module._load (node:internal/modules/cjs/loader:871:27)
at Module.require (node:internal/modules/cjs/loader:1098:19)
at require (node:internal/modules/cjs/helpers:108:18)
at Object.<anonymous> (/Users/vector/dev/book/hexotest/node_modules/hexo-theme-next/scripts/events/lib/utils.js:5:13)
...
通过报错信息得知,找不到cssmodule,直接尝试安装npm install css,安装成功后再次执行hexo clean成功了,真棒,还好不是其他稀奇古怪的问题,不然就太为难楼主这个node渣渣了。