我將使用代表性示例解釋我的問題。使用其他文件的內容預處理(填充,生成)文件
比方說,我有這2個配置文件:
# product-conf.file
seo_title: general_title
seo_description: seo_description
seo_canonical: seo_canonical
product_id: general_id
title: general_title
intro: general_intro
。
# service-conf.file
seo_title: general_title
seo_description: seo_description
seo_canonical: seo_canonical
service_id: general_id
title: general_title
products: list_products
正如您所看到的,3個第一行(配置字段)完全相同。我實際上使用YAML來處理這些文件。我想在可維護的文件中包含代碼片段並將它們包含在調用中。我需要這些預處理器。例如:
# snippet-seo.file
seo_title: general_title
seo_description: seo_description
seo_canonical: seo_canonical
。
# product-conf-master.file
@include snippet-seo
product_id: general_id
title: general_title
intro: general_intro
。
# service-conf-master.file
@include snippet-seo
service_id: general_id
title: general_title
products: list_products
預處理程序將讀取/masters/*
所有的主文件,參加所有的通話和/snippets/
代他們合適的片段,並保存結果在/
我做的調用與@
但我可以選擇其他適合於所選預處理器的格式。我用這種方式,因爲它非常類似於SASS指令@extend
或@include
。
我可以實現這一目標的最佳和最簡單的方法是什麼?節點包將是我的第一選擇。
你有沒有想過使用合併密鑰工具將文件組合成一個組合YAML文件來定義公共部分,並直接使用它(區分在頂層名稱上使用什麼)或從這個組合中寫出不同的YAML文件? – Anthon
是的,這可能有幫助。隨着你的輸入,我現在已經能夠找到更多關於這方面的信息(http://yaml.org/type/merge.html) 但是,我仍然不知道用什麼來預處理(合併)這些文件。這些文件的使用者需要處理的文件。與瀏覽器需要CSS相同的方式,不是SASS。 –
對於預處理,您需要使用一些通用模板。但是,如果您使用合併密鑰和單個源YAML,則可以使用幾行Python代碼輕鬆分割該源。 – Anthon