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

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

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

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

nodeca/js-yaml · GitHub

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を使いたいときに試してみると良さそう。