2016-12-03 42 views

回答

5

不,沒有辦法在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的原始值將會回來。其他解析器只是在加載時解決這個問題不存在這個問題。