You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JSON ref批量合并多个YAML列表,无需逐个引用元素

实现方案

原生YAML语法本身不支持直接跨文件批量展开引用数组的所有元素,你可以根据你使用的工具链选择以下任意一种方案实现需求:

1. 用命令行工具静态合并(无需修改源文件引用逻辑)

如果你只需要静态生成合并后的YAML文件,用yq工具执行一行命令即可完成合并:

# 将v1/publications.yml里的tags数组合并到主文件的数组末尾,直接输出合并结果
yq eval 'load("v1/publications.yml").tags as $pub_tags | . + $pub_tags' 你的主YAML文件路径.yml
# 加-i参数可直接覆盖主文件实现修改
yq eval -i 'load("v1/publications.yml").tags as $pub_tags | . + $pub_tags' 你的主YAML文件路径.yml

2. 用支持数组展开的引用解析工具

如果你是在代码中处理YAML的$ref引用,绝大多数JSON/YAML引用解析库都支持数组自动展开配置:

  • 如果你用的是JS生态的json-refs库,开启解析配置项filter: ['array']后,直接写- $ref: "v1/publications.yml#/tags"即可自动把引用的数组所有元素展开到当前位置,不需要加下标。
  • 如果你用的是OpenAPI/Swagger技术栈,使用swagger-cli执行打包命令即可自动展开所有数组引用:
    swagger-cli bundle 你的主YAML文件路径.yml -o 合并后输出文件.yml
    

3. 跨文件锚点引用(适合多文件共享公共配置场景)

如果你的解析工具支持跨文件YAML锚点识别,可以先给公共数组加锚点:
v1/publications.yml修改为:

tags: &publication_tags
  - name: Publication
    description: |
      This defines the publication API.

主文件里直接引用锚点即可自动展开数组:

- name: Core
  description: Core functionality
- name: Artifact
  description: Artifact management
*publication_tags

内容的提问来源于stack exchange,提问作者Archimedes Trajano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 17:24:04