nconfでYAMLファイルを扱える様にする

evacでは、アグリゲータとしての挙動をJSONファイルで定義する様にしていて、その内容の解釈にnconfを利用しているのだけど、YAMLもフォーマットとしてサポートさせたいので試してみたのでその際のメモ。

nconf自体はパーサーを外部に指定できる仕組みがあるので以下の様に組み合わせるとYAMLJSONを扱うのと同様に解釈できた。

YAMLのパーサーには以下を利用した。

YAMLファイルを適当に準備。

in:
staticWord:
text: "test word."
filter:
through:
out:
stdout:

これをnconfと組み合わせてYAMLを設定ファイルとして解釈させるには以下の様にすればよい。

var config = require('nconf');
var yaml = require('js-yaml');
config.use('file',{
file:'/home/hideack/foo.yaml',
format:{
parse: yaml.safeLoad,
stringify: yaml.safeDump
}
});
config.load(function (err, conf) {
console.log(conf);  //{ in: {staticWord: {text:'test word.'}},filter: {through: null},out: {stdout: null}}
});

JSONで設定ファイルだとちょっと...といったケースでYAMLを使いたいときに試してみると良さそう。