🍃このブログは移転しました。
3秒後、自動的に移動します・・・。

JSON5をJSONにするGruntプラグインを作った

そのまんまです。

参考:leader22/grunt-json5-to-json
参考:grunt-json5-to-json

時間ないのとあまり自信あるコードじゃないのでnpmには上げてませんので、需要がある場合はGithubから。
偉大なる先輩に後押しいただき、さきほどnpmデビューしました。


そもそもJSON5とは

参考:JSON5 by aseemk

このリンクのExample見るのが早いです。

普通にJSON書いてて辛いなーと思うであろう、

  • コメントかけない
  • 改行できない
  • 全部ダブルクオートする面倒さ
  • ケツカンマ勢の発狂

みたいな諸問題を解決してくれるやつです。

  • コメントかける
  • 複数行の文字列かける
  • jsのObjectみたく、キーにクオートがいらない
  • ケツカンマしても怒られない

そんなやつです。

もはやYAML使えみたいな声は、本家に言ってください(

このプラグインについて

コード読まれると一発なんですけど、ほぼほぼgrunt-contrib-copyと同じで、
copyする代わりにJSONにコンバートしてるだけです。

ゆえにターゲットの指定方法は迷わないと思います。

grunt.initConfig({
  json5_to_json: {
    options: {
      replacer: null,
      space: 2
    },
    all: {
      options: {
        space: 4
      },
      src: ['path/to/**/*.json5'],
      dest: 'path/to/json/'
    },
  },
});

オプションだけ違ってて、

// data, replacer, space
JSON.stringify(obj, null, 2);

この後ろ2つが指定できます。

npm install grunt-json5-to-json

からどうぞ。

つくった経緯

サーバーサイドのエンジニアとJSONでやりとりするとき、どうやるんがええのかねーって話がありまして。

  • サンプルのJSON作るのはマスト
  • ドキュメントに残すのもマスト

うーむ、生JSONだと辛い・・ならコメントも書けるJSON5や!って。

サーバーサイドがNodeなら良かったものの、
そうじゃないので、またひとつGrunt界がカオスになっていくのです。

参考: Yet Another JSONなJSON5の紹介とそれのjsxバインドを作ったこと