【node.js】TransformStreamを使ってみた
はじめに
babelifyとかいうモジュールのコードを見てたらstreamというのが出てきてよくわからなくなったのでとりあえずいじってみた
内容はcsvを読み込んでtsvに変換して出力するだけ
test.js
#!/usr/bin/env node var fs = require("fs"), inherits = require("util").inherits, Transform = require("readable-stream/transform"); // input var reader = fs.createReadStream("input.csv", "utf-8", {bufferSize: 10}); reader.setEncoding("utf8"); // output var writer = fs.createWriteStream("output.tsv"); // csv → tsvへ inherits(TransformCsv2tsv, Transform); function TransformCsv2tsv(opts) { Transform.call(this, opts); } TransformCsv2tsv.prototype._transform = function(chunk, encoding, done) { chunk = chunk.replace(/,/g, "\t"); this.push(chunk); done(); }; var transform = new TransformCsv2tsv({ objectMode: true }); // 実行 reader.pipe(transform).pipe(writer);
動作確認
$ cat input.csv 1,一郎 2,二郎 3,三郎 $ ./test.js $ cat out.csv 1 一郎 2 二郎 3 三郎
おわりに
babelifyはes6形式のファイルをes5で動くように変換してくれるので、こういう形でやるのかというのがなんとなくわかってよかった。
以上です