'gulp-csv2json'を使ってCSVをJSONに変換する方法


'gulp-csv2json'の使い方を覚え書き。

インストール方法はこちらから
https://www.npmjs.com/package/gulp-csv2json

解説

やりたいこと

CSVをJSONにgulp4を使って変換させたい。。
(今回そのCSVはダブルクオートやクオートで囲われていない)

環境

  • 環境
    • OS: Windows7
    • nodeJS: 8.11.2
    • npm: 6.1.0
  • モジュール
    • gulp: 4.0.0
    • gulp-csv2json: 0.2.5
    • gulp-rename: 1.2.3

はしょっていますが、階層構造はこんなかんじです。

sample
  ├─ src/
  │  ├─ data/
  │  │  └─ csv/
  │  │        └─ *.csv
  │  │  
  │  └─ ...
  │     
  ├─ temp/
  ├─ dist/
  │
  ├─ .node_modules/
  ├─ .babelrc
  ├─ gulp.babel.js
  ├─ package-lock.json
  └─ package.json  

方法

gulpfile.babel.js
import gulp from 'gulp';
import babel from 'gulp-babel';
import csv2json from 'gulp-csv2json';
import rename from 'gulp-rename';

// csvをjsonへ変換
const makejson = () => {
  // csvの値がダブルクオートで囲まれていないのでfalse
  var csvParseOptions = {
    quote: false
  };

  return gulp.src('src/data/csv/*.csv')
        .pipe(csv2json(csvParseOptions))
        .pipe(rename({extname: '.json'}))
        .pipe(gulp.dest('src/data/json/'));
};
exports.makejson = makejson;

これでsrc/data/内にjsonディレクトリが生成されてjsonファイルが出力されます。
ポイントとしては引用符で囲われていないCSVはオプションでquote: falseにしてあげることです。

逆に、ダブルクオートで囲われている場合はオプションは必要ないです。
その他特別な文字で値が囲われている場合はbooleanではなく文字列として指定してあげればいいはずです。

パーサーオプションの一覧はこちら
http://csv.adaltas.com/parse/

ちなみに、importしたモジュール名とconstで宣言したタスク名は重複できないのでご注意ください。