详细教程请查看 官方文档

YAML

找到 General -> Mixin 开启选项,点击小齿轮编写配置文件:

mixin: # object
  rules:
  # ...
  dns:
  # ...

保存后会将 Mixin 中的自定义配置规则项覆盖原有文件规则,没有修改的不会覆盖。

例如上面修改了 rulesdns 配置项,则只会覆盖这两项,其他没有修改的不会被覆盖,继续保持原有规则。

Tip: 原有的配置文件不会被修改,这里的覆盖是指在内存中生成一份新的配置文件并使用它,关闭 Mixin 选项则恢复使用原有配置。

Tip: 点击 General -> Clash Core 的第一个芯片状小图标预览最终提交给 Clash Core 的配置文件。

JavaScrip

如果我们想更灵活的修改或追加配置文件内容,可以使用 JavaScrip 进行混合生成。

找到 Setting -> Mixin 选项组,将 Type 修改为 JavaScrip 选项,点击 JavaScrip -> Edit 编辑:

module.exports.parse = async (
  { content, name, url }, 
  { axios, yaml, notify }
) => {
  const extra = { 
    rules: [
      'DOMAIN-SUFFIX,bing.com,🚀 节点选择',
      'IP-CIDR,8.288.176.170/32,🚀 节点选择',
      ...content.rules,
    ],
  }
  return { ...content, ...extra }
}

参数 content 表示将原有配置 YAML 配置文件序列化之后的 JavaScrip 对象,函数内定义的 extra 对象表示自定义配置的规则对象。

这里我想要修改 rules 配置项,它接收的值包含规则的字符串数组。

因为我想要追加规则,而不是像之前 YAML 配置中那样覆盖规则,所以我将自定义规则结合使用 content.rules 获取原有的 rules 项,合并为一个新的数组。

最后将 contentextra 合并成一个新对象返回出去,CFW 会将返回的对象序列化后直接载入。