hexo 升级到 5.x , next 升级到 8.x

1. 根目录检查 npm outdated 哪些需要更新,对应修改 package.json 文件的版本号:
{
"name": "hexo-site",
"version": "0.0.0",
"private": true,
"hexo": {
"version": "5.2.0"
},
"dependencies": {
"hexo": "^5.2.0",
"hexo-deployer-git": "^2.1.0",
"hexo-generator-archive": "^1.0.0",
"hexo-generator-category": "^1.0.0",
"hexo-generator-index-pin-top": "^0.2.2",
"hexo-generator-tag": "^1.0.0",
"hexo-renderer-ejs": "^1.0.0",
"hexo-renderer-marked": "^3.3.0",
"hexo-renderer-stylus": "^2.0.1",
"hexo-server": "^2.0.0"
}
}
2. 升级 npm install —save ,完了运行 hexo —version 可查看当前版本号

这个时候控制台出现了一个警告错误:

WARN  Deprecated config detected: "external_link" with a Boolean value is deprecated. See https://hexo.io/docs/configuration for more details.

解决:找到 _config.yml 这个文件,修改 external_link 的配置:

#原始
external_link: true # Open external links in new tab

#改成这样
external_link:
enable: true # Open external links in new tab
field: site # Apply to the whole site
exclude: ''
3. 然后 hexo g、hexo d,看下网站有没有啥问题

哦豁,挂了,还是不能这么简单粗暴…
image.png看了下生成静态文件的时候控制台出现的信息:

WARN  ===============================================================
WARN ========================= ATTENTION! ==========================
WARN ===============================================================
WARN NexT repository is moving here: https://github.com/theme-next
WARN ===============================================================
WARN It's rebase to v6.0.0 and future maintenance will resume there
WARN ===============================================================

哦,换了个组织维护,代码库都变了….

  • 确认是不是主题的问题,把主题配置修改成默认主题,执行 hexo ghexo server 后,打开 localhost:4000,可以正常查看!所以果真是 next 更新的问题。
  • 备份之前的 next 文件夹
  • 克隆新的 next git clone https://github.com/next-theme/hexo-theme-next themes/next
  • 再次执行 hexo ghexo server 后,打开 localhost:4000,恢复正常了~
  • 当然,之前的自定义设置都没有了

题外,顺带了解了一下 hexo 的目录结构:

_config.yml //配置文件
[themes] //主题文件夹,每个主题对应一个单独的文件夹,默认主题为landscape,初始化时自动创建
[source] //资源文件夹,用来存放图片、Markdown文档(文章、草稿)、各种页面(分类、关于页面等)
[scripts] //脚本目录,此目录下的 JavaScript 文件会被自动执行
[scaffolds] //模板文件夹,包含 page,post,draft 三种模板,初始化时自动创建
package.json //记录 hexo 的版本以及相关依赖包的版本
package-lock.json //npm 时自动生成的文件,也是用来记录版本号的,具体区别可以 Google
[node_modules] //用来存储已安装的各类依赖包(node 中使用命令 npm install 会产生的文件夹)

//执行过 `hexo deploy` 命令,目录结构会新增:
[public] //将 source 文件夹里的 Markdown 文档,转换成 index.html 静态文件
.deploy_git //将 public 文件夹的内容提交到 Github 后生成,内容与 public 文件夹基本一致
.gitignore //推送 git 时忽略文件夹,可以把 hexo g、d 执行时自动生成的一些文件夹放在里面
db.json //db.json是由source/**/*.md的所有文件解析得到的
4. 配置一下新的 next
  • 新的很多常用设置,都是开关 true / false 就好
  • sidebar 添加最近文章和背景音乐,需要在 hexo/source/_data/sidebar.njk 中添加内容(注意要在 next 配置文件中打开_data/sidebar.njk
    {# RecentPosts #}
    {%- if theme.recent_posts %}
    <div class="links-of-recent-posts motion-element">
    <div class="links-of-recent-posts-title">
    {%- if theme.recent_posts.icon %}
    <i class="{{ theme.recent_posts.icon }} fa-fw"></i>
    {%- endif %}
    {{ theme.recent_posts.title }}
    </div>
    <ul class="links-of-recent-posts-list">
    {%- set posts = site.posts.sort('date', 'desc').toArray() %}
    {%- for post in posts.slice('0', theme.recent_posts.max_count) %}
    <li class="links-of-recent-posts-item">
    {{ next_url(post.path, post.title, {title: post.path}) }}
    </li>
    {%- endfor %}
    </ul>
    </div>
    {%- endif %}

    {# NetCloudMusic #}
    <div>
    <iframe id="iframer" frameborder="no" border="0" marginwidth="0" marginheight="0" width=220 height=52 src=""></iframe>
    </div>
    <script language='javascript' type='text/javascript'>
    window.onload = function(){
    setTimeout(function () {
    var iframer = document.getElementById("iframer");
    iframer.setAttribute("src","//music.163.com/outchain/player?type=2&id=526656&auto=1&height=32");
    }, 1000);
    }
    </script>