Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

meta-json-schema

dongchengjie4.4kMIT1.19.1

JSON Schema for Clash Meta

clash, clash.meta, schema

readme

🧩 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为路径通配符,请根据需求自行修改。
    {
      "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-editor
    npm install vite-plugin-monaco-editor
    1. 配置 vite.config.ts
    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"
            }
          ]
        })
      ]
    });
    1. 代码中配置schema(请根据需求自行修改 fileMatch )。
    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进行输出,并根据 optimization 决定是否进行压缩。

pnpm release

📖 JSON Schema 语法参考

<summary>JSON Schema标准语法</summary>

项目使用的JSON Schema版本为draft-07,语法请参考JSON Schema Reference

<summary>Monaco Editor扩展语法</summary>

Monaco 编辑器是为 VS Code 提供支持的开源代码编辑器,使用下列属性提供更丰富的 Snippet 支持。

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>
proxies:
  - { name: "proxy1", type: "ss", cipher: "auto", tls: "true" }
  - { name: proxy2, type: ss, cipher: auto, tls: true }
<summary>Folded Style</summary>
proxies:
  - name: "proxy1"
    type: "ss"
    cipher: "auto"
    tls: "true"
  - name: proxy1
    type: ss
    cipher: auto
    tls: true

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

changelog

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 选项

Bugs Fixes


v1.18.7

Changes

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

Bugs Fixes


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版本

Bugs Fixes