Detalhes do pacote

meta-json-schema

dongchengjie70.9kMIT1.19.16

JSON Schema for Clash Meta

clash, clash.meta, schema

readme (leia-me)

🧩 VSCode 插件

VS Code 扩展商店搜索 Meta JSON SchemaClashMeta.meta-json-schema ,安装扩展后即可获取 Clash.Meta 的语法支持。

💡 用法

<summary>Visual Studio Code中使用</summary> 1. 安装YAML语法支持插件 redhat.vscode-yaml 。 2. 在 .vscode 目录下的 settings.json 文件中(如不存在则手动创建),填入以下内容。其中,key为schema文件的地址(url或本地文件),value为路径通配符,请根据需求自行修改。 json { "yaml.schemas": { "https://fastly.jsdelivr.net/gh/dongchengjie/meta-json-schema@main/schemas/meta-json-schema.json": "**/*.yaml" } }
<summary>Monaco Editor中使用</summary> 1. 安装 monaco-editor (编辑器)和 monaco-yaml (YAML支持)。 npm install monaco-editor npm install monaco-yaml 2. 如果是vite项目,可通过安装插件简化初始化(其他构建工具如 webpack 请参考monaco-yaml文档)。 1. 安装 vite-plugin-monaco-editornpm install vite-plugin-monaco-editor 2. 配置 vite.config.tsjavascript import { defineConfig } from "vite"; import monacoEditor from "vite-plugin-monaco-editor"; export default defineConfig({ plugins: [ monacoEditor({ languageWorkers: ["editorWorkerService"], customWorkers: [ { label: "yaml", entry: "monaco-yaml/yaml.worker" } ] }) ] }); 3. 代码中配置schema(请根据需求自行修改 fileMatch )。 javascript import * as monaco from "monaco-editor"; import { configureMonacoYaml } from "monaco-yaml"; configureMonacoYaml(monaco, { validate: true, enableSchemaRequest: true, schemas: [ { uri: "https://fastly.jsdelivr.net/gh/dongchengjie/meta-json-schema@main/schemas/meta-json-schema.json", fileMatch: ["**/*.clash.yaml"] } ] });

👓 JSON Schema可视化

🖥️ 贡献代码

  1. Fork仓库代码

  2. 使用Visual Studio Code打开项目(工作目录为.vscode所在目录)

code path/to/project

[!NOTE] 项目打开后会弹出建议安装YAML插件的提示,请点击确认安装或手动安装,以获取良好的开发体验。

  1. 安装依赖
pnpm install
  1. 启动项目。

  2. 执行下列命令后,会对 src 目录进行监视。

  3. 如果发生变动则会对项目进行打包,输出到 schemas 目录下。
pnpm dev
  1. 测试验证生成的schema文件

  2. 由于 .vscode 目录下 settings.json 中已事先配置了如下配置( test 目录下的文件使用 schemas 目录下输出的schema文件)。于是可以对src目录中的内容进行修改,通过自动打包更新schema文件。

  3. 通过在 test 目录下新增测试文件,观察并验证校验结果,并及时做出修正。
"yaml.schemas": {
  "schemas/meta-json-schema.json": "test/clash-meta/**/*.yaml",
  "schemas/clash-verge-merge-json-schema.json": "test/clash-verge/**/*.yaml",
  "schemas/clash-verge-nyanpasu-json-schema.json": "test/clash-nyanpasu/**/*.yaml"
}
  1. 输出打包

  2. 执行下列命令后,会根据 package.json 文件中定义的releases进行输出,并根据 optimize 中的配置决定是否进行压缩。

pnpm release

📖 JSON Schema 语法参考

<summary>JSON Schema标准语法</summary> 项目使用的JSON Schema版本为draft-07,语法请参考JSON Schema Reference
<summary>Monaco Editor扩展语法</summary> > Monaco 编辑器是为 VS Code 提供支持的开源代码编辑器,使用下列属性提供更丰富的 Snippet 支持。 typescript interface JSONSchema { // 自定义Snippet建议(数组) defaultSnippets?: { label: string; // 标签文本(索引) description?: string; // 标签描述(需要点击展开) markdownDescription?: string; // 标签描述(需要点击展开,markdown格式,优先级高于description) body: any; // 实际取值内容 bodyText?: string; // 实际取值内容文本(暂无作用) }[]; errorMessage?: string; // 错误信息 patternErrorMessage?: string; // 格式错误信息(优先级高于errorMessage) deprecationMessage?: string; // 过时错误信息 enumDescriptions?: string[]; // 枚举描述信息(数组) markdownEnumDescriptions?: string[]; // 枚举描述信息(markdown格式) markdownDescription?: string; // 描述信息(markdown格式) doNotSuggest?: boolean; // 不显示建议 suggestSortText?: string; // 属性值建议排序符(默认为属性名) allowComments?: boolean; // 允许注释 allowTrailingCommas?: boolean; // 允许尾随逗号 }

❓ FAQ

definitions目录下的 compatible.json 文件的用途是什么?

YAML支持 Folded StyleInline Style 的写法。 使用"type": "boolean"来定义某个属性,那么'true''false'就会提示Incorrect type. Expected "boolean".

因此引入compatible类型,以兼容多种编码风格。

<summary>Inline Style</summary> yaml proxies: - { name: "proxy1", type: "ss", cipher: "auto", tls: "true" } - { name: proxy2, type: ss, cipher: auto, tls: true }
<summary>Folded Style</summary> yaml proxies: - name: "proxy1" type: "ss" cipher: "auto" tls: "true" - name: proxy1 type: ss cipher: auto tls: true

[!NOTE] 由于这种情况多发生于 proxies 配置部分,所以目前仅 proxies 配置中使用了 compatible.json ,其余地方可视情况使用。

changelog (log de mudanças)

v1.19.16

Changes

  • 新增: DNS 新增 fake-ip-range6 配置项
  • 新增: inbound 新增 mieru listeners 配置项

v1.19.15

Changes

  • 调整: 回退 mieru 弃用的 port-range 字段

v1.19.14

Changes

  • 调整: 更新 vless encryption 客户端配置描述
  • 新增: wireguard 新增 s3s4 配置项(AmneziaWG v2.0)
  • 调整: wireguard 的 h1h2h3h4 配置项类型调整为字符串(AmneziaWG v2.0)
  • 新增: TUN 新增 disable-icmp-forwarding 配置项
  • 移除: hy1/hy2/tuic 移除 caca-str 配置项(使用 fingerprint 代替)
  • 新增: anytls/http/hy/hy2/ss/socks/trojan/tuic/vless/vmess 新增 certificateprivate-key 配置项
  • 新增: listener anytls/http/hy2/mixed/socks/trojan/tuic/vless/vmess 新增 client-auth-typeclient-auth-cert 配置项
  • 新增: ss 新增 kcptun 插件相关配置项支持
  • 调整: mieru 弃用 port-range 字段(功能合并到 port

v1.19.13

Changes

  • 新增: vless 新增 encryption 配置项(vless encryption 客户端配置)
  • 新增: listener vless 新增 encryption 配置项(vless encryption 服务端配置)
  • 新增: mieru 新增 handshake-mode 配置项(握手模式)
  • 新增: wireguard 新增 i1i2i3i4i5j1j2j3itime 配置项(AmneziaWG v1.5)

v1.19.12

Changes

  • 新增: 规则 新增 DOMAIN-WILDCARD 规则的支持(匹配域名通配符)
  • 新增: TUN 新增 Darwin 平台特殊配置 recvmsgxsendmsgx
  • 新增: DNS 新增 配置项 cache-max-size (最大缓存大小)

v1.19.11

Changes

  • 新增: TUN 新增 loopback-address 配置项

Bugs Fixes

  • 修复: sniffer 配置的 force-domain 配置项不支持 geosite:rule-set:

v1.19.10

Changes

  • 调整: 路由规则的参数部分(no-resolve、src),其前后支持任意个数的空格
  • 调整: IPv6 支持 IPv4-mapped IPv6 格式

Bugs Fixes

  • 修复: external-controller-cors 配置的 allow-origins 配置项误写成 allow-origin
  • 修复: TUN 配置项 inet4-addressinet6-address 类型错误(应为 CIDR 数组)

v1.19.9

Changes

  • 新增: reality 新增 support-x25519mlkem768 配置项
  • 新增: anytls/shadowsocks/trojan/vmess/vless/hysteria/hysteria2/tuic 协议 新增 ech-opts 配置项
  • 新增: listener anytls/http/hysteria2/mixed/socks/trojan/tuic/vless/vmess 新增 ech-key 配置项
  • 新增: tls(external-controller-tls) 新增 ech-key 配置项

v1.19.6

Changes

  • 新增: shadowsocksshadow-tls 插件 新增 alpn 配置项
  • 新增: listener shadowsocks 新增 shadow-tls 配置项
  • 移除: 代理组移除 routing-markinterface-name 配置项

Bugs Fixes

  • 修复: 域名正则松散,支持单段/自定义域名,如:localhost、internal 等

v1.19.5

Changes

  • 新增: TUN 新增 exclude-src-portexclude-src-port-rangeexclude-dst-portexclude-dst-port-range 配置项

v1.19.4

Changes

  • 新增: ss 协议 新增 gost-plugin 插件支持
  • 新增: mieru 协议 新增 udp 支持

Bugs Fixes

  • 修复: 代理组类型配置项 type 枚举重复显示

v1.19.3

Changes

  • 调整: external-ui-url 补充说明支持的压缩包格式
  • 新增: proxy 新增 anytls 协议
  • 新增: inbound 新增 anytls、trojan listeners 配置项
  • 新增: inbound(trojan、vless、vmess) 部分新增 grpc-service-name 配置项
  • 调整: inbound 端口支持使用 ports 格式
  • 调整: inbound (socks5、http、mixed)支持 tls 配置

Bugs Fixes

  • 修复: inbound (socks5、http、mixed)缺失 reality-config 配置项

v1.19.2

Changes

  • 新增: hy2 新增 initial-stream-receive-windowmax-stream-receive-windowinitial-connection-receive-windowmax-connection-receive-window quic-go 配置项
  • 新增: inbound 新增 vless listeners 配置项

Bugs Fixes

  • 修复: 枚举 cipher 缺失加密方法 2022-blake3-aes-128-ccm2022-blake3-aes-256-ccm2022-blake3-chacha8-poly1305chacha20-poly1305chacha8-ietf-poly1305xchacha8-ietf-poly1305zero

v1.19.1

Changes

  • 新增: rule-providers 新增 inline 内联规则配置
  • 新增: proxy-providers 新增 inline 内联 proxies 配置
  • 调整: outbound 的 header 配置项宽松,不再限制 value 的类型为 string

Bugs Fixes

  • 修复: tuic V4 的 token 配置项类型错误

v1.19.0

Changes

  • 新增: proxy-provider 新增 size-limit 配置项
  • 新增: proxy 新增 mieru 协议

v1.18.10

Changes

  • 新增: DNS 新增 direct-nameserverdirect-nameserver-follow-policy 配置项

Bugs Fixes

  • 修复: skip-auth-prefixeslan-allowed-ipslan-disallowed-ips 类型错误

v1.18.9

Changes

  • 新增: 全局配置新增 etag-support 开关
  • 新增: 外部控制器 新增 external-controller-pipe 配置项,支持从 Windows namedpipe 访问 API
  • 新增: 外部控制器 新增 external-controller-cors 配置跨域响应头
  • 新增: proxy-provider 的 override 配置项新增 proxy-name 配置项,支持正则替换代理名称
  • 新增: wireguard 新增 amnezia-wg-option 配置项

v1.18.8

Changes

  • 新增: 添加对 clash-nyanpasu Merge Schema 的支持 #1
  • 新增: httpsocksmixed 入站配置 新增 users 认证配置项
  • 新增: sniff 新增 skip-src-addressskip-dst-address 配置项
  • 新增: dns 新增 fake-ip-filter-mode 配置项
  • 调整: 规则 GEOIPIP-ASNIP-CIDRIP-CIDR6IP-SUFFIXRULE-SET 支持追加 ,src 选项

v1.18.7

Changes

  • 调整: tun 配置项 route-exclude-address 描述
  • 调整: 支持部分 chacha8 加密方法
  • 新增: 全局配置新增 external-doh-server,支持配置提供本地 DOH 服务
  • 新增: 规则集新增 mrs 格式
  • 新增: 全局配置新增 keep-alive-idledisable-keep-alive 保持连接相关配置
  • 移除: 不再支持 ebpf 配置

v1.18.6

Changes

  • 新增: trojan出站配置 新增配置项 ss-opts 以支持 Shadowsocks AEAD 加密
  • 新增: dns 新增配置项 respect-rules
  • 新增: wireguard 配置项 refresh-server-ip-interval
  • 调整: rules 正则表达式
  • 新增: proxy-provider 新增覆写配置项 tfomptcpudp-over-tcp
  • 调整: tun 弃用配置项 inet4-route-addressinet6-route-addressinet4-route-exclude-addressinet6-route-exclude-address,使用 route-addressroute-exclude-address 代替
  • 调整: tun 配置项 table-index 重命名为 iproute2-table-index
  • 新增: tun 新增配置项 iproute2-rule-indexauto-redirectauto-redirect-input-markauto-redirect-output-markroute-address-setroute-exclude-address-set

Bugs Fixes

  • 修复: bind-address 类型错误
  • 修复: 字符串数组提示错误
  • 修复: route-addressroute-exclude-address 格式错误

v1.18.5

Changes

  • 新增: dns 新增配置项 use-system-hosts
  • 调整: 调整部分配置描述
  • 移除: Clash Verge Merge 配置移除prepend-rule-providersprepend-proxy-providersappend-rule-providersappend-proxy-providers
  • 新增: sniffer 未配置 sniff 警告
  • 新增: vless 使用旧版 XTLS 协议警告
  • 新增: rules 新增规则 PROCESS-NAME-REGEXPROCESS-PATH-REGEX

Bugs Fixes

  • 修复: cipher 缺少 none
  • 修复: default-nameserver类型错误
  • 修复: nameserver-policy 不支持配置单个 DNS 服务器字符串
  • 修复: 域名通配格式错误

v1.18.4

Changes

  • 新增: proxy-providers 新增配置项 header
  • 调整: proxy-providers,proxy-group 配置项 health-checkintervaltimeout 属性类型变更(integer --> string), 支持配置时间单位
  • 新增: 新增配置项external-controller-unix,允许使用 Unix Socket 访问 API

Bugs Fixes

  • 字符串数组类型错误
  • 监听地址支持:port
  • sniffer 的 http ports 类型错误

v1.18.3

Features

  • 首个 JSON Schema 版本