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

使用YQ更新DigitalOcean应用YAML配置时丢失内容求助

解决yq修改DigitalOcean应用配置文件时丢失非目标内容的问题

你遇到的问题是当前yq命令仅输出被修改的envs项,导致原文件其他配置被覆盖。要保留完整文件结构并修改目标值,需调整命令写法,确保在整个文档上下文内执行修改:

正确命令(适用于yq v4+)

写法一:用括号限定修改范围

yq e '( .services[0].envs[] | select(.key == "NUXT_PUBLIC_VERSION").value ) = "v0.5.0"' current-app-spec.yaml -i

写法二:使用|=更新操作符

yq e '.services[0].envs[] |= (select(.key == "NUXT_PUBLIC_VERSION").value = "v0.5.0")' current-app-spec.yaml -i

原理说明

原命令中的|管道符会将筛选后的单个envs条目作为输出结果,执行-i(原地修改)时会用该结果覆盖整个文件。而上述两种写法:

  1. 括号包裹修改逻辑,让yq明确要在整个文档基础上修改指定字段,而非仅输出修改部分
  2. |=操作符表示对选中的数组元素执行更新操作,修改后仍保留完整文档结构

执行命令后,NUXT_PUBLIC_VERSION的value会被更新为v0.5.0,同时文件中的alerts、domains、ingress等其他配置将完整保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 07:15:09