4
我有一個YAML文件是這樣的:如何從yaml config中刪除繼承屬性?
local: &local
image: xxx
# *tons of config*
ci:
<<: *local
image: # delete
build: .
我想ci
從local
繼承所有值,除了image
。
有沒有辦法「刪除」這個值?
我有一個YAML文件是這樣的:如何從yaml config中刪除繼承屬性?
local: &local
image: xxx
# *tons of config*
ci:
<<: *local
image: # delete
build: .
我想ci
從local
繼承所有值,除了image
。
有沒有辦法「刪除」這個值?
不,沒有辦法在YAML文件中標記要刪除的key
。您只能overwrite existing values。
而後者是你做什麼,你就好像你會寫空的標量和值相關聯的關鍵image
:
image: null # delete
有兩件事情可以做:後處理或使YAML文件中的基本映射。
如果要後處理,請將特殊的唯一值與image
或特殊標記的對象關聯起來,並且在加載遞歸遍歷樹以刪除具有此特殊值的鍵值對之後。在解析期間,使用鉤子還是覆蓋它的某些方法,您是否已經可以執行此操作取決於解析器。
使用基礎測繪需要較少的工作,但更侵入到YAML文件:
localbase: &lb
# *tons of config*
local: &local
image: xxx
ci:
<<: *lb
build: .
如果你以前,你應該注意的是,如果你使用的解析器,同時保留「合併層次結構」在往返跳動時(就像我的ruamel.yaml
解析器可以做的那樣),僅僅刪除鍵值對是不夠的,在這種情況下,local
的原始值將會回來。其他解析器只是在加載時解決這個問題不存在這個問題。