我试图使用js-yaml将yml文件导入到js文件中。主yml文件包含在另一个文件中引用的变量。
我正试图找到一种方法来导入这些额外引用的值,但是当我使用safload或load时,文件只加载引用(而不是实际值)。
下面是文件的样子、预期结果和实际结果。
谢谢你的帮助!
主要。yml文件
otherAttribute:
bar: 'foo'
custom: ${file(otherFile.yml)}
RotherFile。yml文件
key1: value
key2: value
js文件
yaml = require("js-yaml");
var example = yaml.load(fs.readFileSync("./main.yml", "utf8"));
console.log('value of example read in via yaml.load',example);
期望输出值
otherAttribute:
bar: 'foo'
custom:
key1: value
key2: value
实际输出
otherAttribute:
bar: 'foo'
custom: ${file(otherFile.yml):${self:otherAttribute.bar}}
您在main.yml
(${file(otherFile.yml)}
)中使用的文件引用语法是无服务器框架的一个特性,而不是YAML。YAML不支持任何引用或包含,参见这个SO问题。
我上面链接的问题的一个答案建议使用PyYAML实现包含的Python版本,可以在这里找到。这可以很容易地修改为支持${file(...)}
而不是!include ...
。
所以,除非你想破解js-yaml
,使其理解${file(...)}
引用,否则最简单的方法可能是遵循Python方法。