51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Hexo+Butterfly主题利用插件系统,批量替换CDN链接地址

前言 {#前言}

如果你的 Butterfly 版本高于 4.3.0,则主题自带 CDN 自定义格式功能。
可参考 主题文档的 CDN 部分 进行配置,无需继续以下步骤。

教程 {#教程}

创建文件 {#创建文件}

创建一个 JavaScript 脚本文件,放到 scripts 文件夹。

增加代码 {#增加代码}

|------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 9 10 11 12 | modify.js 'use strict'; const { filter } = hexo.extend; // 替换 CDN filter.register('before_generate', () => { const { asset } = hexo.theme.config; for (const name in asset) { asset[name] = asset[name] .replace('//cdn.jsdelivr.net/npm/', '//npm.elemecdn.com/'); } }, 11); |

按需修改 {#按需修改}

根据需要更改 replace 方法的参数,上文是将 jsDelivr 替换为 饿了么。

原理介绍 {#原理介绍}

参考主题 config.js 的代码。
主题会在运行时,根据配置文件动态生成链接并增加到配置中。
那么我们只需要再用相同的方式,微调一下就能做到批量替换了。

在 Hexo 注册 before_generate 过滤器,设置优先级为 11。
触发时,遍历配置中的 asset 选项并替换链接。

过滤器 的默认优先级是 10,所以我们设置成 11。
确保等主题处理完配置之后再运行。

参考链接:https://android99.com/2022/05/17/butterfly-replace-cdn/


赞(4)
未经允许不得转载:工具盒子 » Hexo+Butterfly主题利用插件系统,批量替换CDN链接地址