Hexo 在不同环境下动态修改配置文件
我网站的新功能「放映厅」是基于一款名叫 hexo-bilibili-bangumi
的插件。
这款插件有个问题,就是当你本地预览时,修改了博客内容后,hexo 不能再自动地重新渲染和加载,我只能一遍又一遍用 hexo cl & hexo s
手动刷新。这曾经让我非常、非常恼火。所以我就想能不能再运行 hexo s
时不经过这个插件?
上 hexo API 文档一查,我了解到可以注册一个过滤器(Filter),在渲染页面之前,先依据修改配置文件。
它是这样描述的:
概要
1
2
3
4
5
6
7
8
9
10 hexo.extend.filter.register(type, function() {
// User configuration
const { config } = this;
if (config.external_link.enable) // do something...
// Theme configuration
const { config: themeCfg } = this.theme;
if (themeCfg.fancybox) // do something...
}, priority);您可以指定过滤器的优先级
priority
。priority
值越低,过滤器会越早执行。 默认的priority
是 10。 我们建议提供配置选项如hexo.config.your_plugin.priority
、让用户自行决定过滤器的优先级。
……
before_generate
在生成器解析前执行。
1
2
3 hexo.extend.filter.register("before_generate", function () {
// ...
});
因此,我们可以创建一个 before_generate
的过滤器,在渲染页面之前,先从配置文件里把插件禁用掉。
插件要求的配置,大概是长这样:
1 | bangumi: # 追番设置 |
所以:
1 | hexo.extend.filter.register("before_generate", function () { |
随便起个名字,你高兴就好;将这个 js 文件保存在 [BlogRoot]/scripts
下,即可。
另外,对于这个插件,我在 [BlogRoot]/package.json
下设置:
1 | { |
构建命令加上插件的更新命令,就彻底解决了文章开头所说的问题。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 PanDaoxi 的博客!
评论