syon

A fashion developer. Interested in life engineering.

[Node.js]yamlファイルのリストをTSVに変換する

28 Apr 2018 » Node.js

やりたいこと

以下のようなファイル構造で、YAMLファイルからTSVを生成したい。 ただし、YAMLのプロパティから memo は除外したい。

actress
  `- 1
  |   `- profile.yaml
  `- 2
      `- profile.yaml
name: 宮崎 あおい
kana: みやざき あおい
birthday: 1985/11/30
memo: めも
name	kana	birthday
宮崎 あおい	みやざき あおい	1985/11/30

実現方法

npm i -S glob
npm i -S js-yaml
npm i -S csv
const fs = require('fs');
const glob = require('glob');
const yaml = require('js-yaml');
const stringify = require('csv-stringify/lib/sync')

const files = glob.sync("target/**/profile.yaml", {});
const profiles = files.map(path => {
  const buf = fs.readFileSync(path, 'utf8');
  const obj = yaml.safeLoad(buf);
  return { shimei: obj.shimei, kana: obj.kana, birthday: obj.birthday };
});

const tsvBuf = stringify(profiles, { delimiter: '\t', header: true });
fs.writeFileSync('profiles.tsv', tsvBuf, ()=>{});

cf.

  • [CSV StringifierNode.js CSV project](http://csv.adaltas.com/stringify/)