Hexo主题与配置分离实现平滑更新

到目前为止,Hexo有三种主题配置方式

1. 站点配置文件方式

这种方式下,所有的配置内容包括 站点配置主题配置,全部放在 站点配置文件(_config.yml) 当中,不需要修改 主题配置文件(themes/next/_config.yml) 或者创建其他什么文件

站点配置文件中要添加一个theme_config 属性,所有的主题选项必须放置在 theme_config后,并全部增加两个空格的缩进,如:


用法

  1. 请确认不存在 source/_data/next.yml 文件(如果已存在,请删除)
  2. 从主题的 themes/next/_config.yml 文件中复制你需要的 NexT 配置项到 /_config.yml 中,然后
    • 所有这些配置项右移两个空格
    • 在这些参数最上方添加一行 theme_config:

有些麻烦,不太推荐这种方式


2. 数据文件方式

使用这一方式,你现在可以将你的全部配置置于同一位置(source/_data/next.yml),并且不需要修改 themes/next/_config.yml。 但是可能无法让所有 Hexo 外部库都准确处理它们的附加选项(举个例子,hexo-server 模块只会从 Hexo 默认配置文件中读取选项)

如果在新的 release 中出现了任何新的选项,那么你只需要从 /themes/next/_config.yml 中将他们复制到 /source/_data/next.yml 中并设置它们的值为你想要的选项


用法:

  1. source/_data目录创建一个next.yml,将主题配置文件中的配置项按需复制到此文件即可,我一般是将整个主题文件的配置内容全部肤质过来,如果没有_data目录,就新建一个
  2. next.yml中的override选项置为true

这种方式下,有些配置项可能不支持,因此不推荐这种,且这种方式已经被Next弃用了


3. _config.[name].yml 方式(推荐使用)

使用这种方法,你的所有配置都放在根目录下的_config.[name].yml 中。将 [name] 替换成你在站点配置文件中 theme 选项后的值,比如:next

平滑更新方式


用法:

  1. 在博客根目录下新建一个配置文件,比如:_config.next.yml
  2. 将你需要的 NexT 主题选项从主题配置文件复制到这个配置文件
  3. 如果之前使用的是选择 2 的方式,可以将 /source/_data/next.yml 中的内容复制到 /_config.next.yml

推荐使用这种方式,非常便于平滑更新


参考链接:

  1. https://theme-next.js.org/docs/getting-started/configuration.html
  2. https://xfdj.github.io/2020/05/02/%E4%BC%98%E5%8C%96%E5%8D%9A%E5%AE%A2%EF%BC%88%E5%8D%81%E5%9B%9B%EF%BC%89%EF%BC%9A%E5%A6%82%E4%BD%95%E5%B9%B3%E6%BB%91%E6%9B%B4%E6%96%B0%E4%B8%BB%E9%A2%98/
  3. https://github.com/theme-next/hexo-theme-next/blob/master/docs/zh-CN/DATA-FILES.md