Skip to main content
本页按实际需求展示 JavaScript 覆写.每个示例都包含预期结果或失败行为.

修改标量字段

修改端口.js
修改端口 diff.js

按条件修改

条件修改.js
moderule 时:
当条件不满足时,脚本返回原对象,不产生 diff.

添加对象字段

添加 DNS 字段.js
添加 DNS 字段 diff.yaml

使用 deepMerge 添加规则

添加规则.js
添加规则 diff.yaml
JavaScript 不会像 YAML 一样自动移动 MATCH.如果原列表没有把 MATCH 放在最后,脚本也不会替你修正.

替换对象或数组

替换 DNS.js
替换 DNS diff.yaml

过滤代理

过滤代理.js
过滤代理 diff.yaml
如果 profile.proxies 不是数组,脚本会使用空数组,最终得到 proxies: [].

修改命名策略组

修改策略组.js
修改策略组 diff.yaml
如果找不到 PROXY,脚本不会创建新的策略组,也不会报错.

读取远程 YAML

远程 YAML.js
远程返回:
预期 diff:
远程 YAML 结果 diff.yaml
网络失败、只支持 HTTPS、YAML 内容损坏或 Promise 未完成都会使脚本失败.

读取远程 JSON

远程 JSON.js
如果 payload.port 不是数字,脚本会保留原来的 mixed-port.

请求头和请求体

POST 请求.js
对象请求体会在发送前转换为 JSON 字符串.

日志和异常

记录并抛错.js
失败时:
  • 当前覆写写入 [exception] 脚本执行失败.
  • 不会继续执行后续覆写.
  • 普通配置会返回脚本错误和文件路径.
  • 加密配置不会在错误或日志中暴露配置内容和路径.

返回错误值

返回数组.js
预期结果:
缺少 main.js
预期结果:

多个 JavaScript 覆写

文件按绑定顺序执行,后一个脚本接收前一个脚本的返回值:
第一个脚本.js
第二个脚本.js
JavaScript 覆写链结果 diff.yaml
第二个脚本缺少 main 时,不会复用第一个脚本的函数,而是直接失败.
最后修改于 2026年8月14日