前言 {#前言}
如果你的 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/