Skip to content

Instantly share code, notes, and snippets.

@rbf
Created February 21, 2022 16:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rbf/2c6559311acfe28ad097f2704e08345a to your computer and use it in GitHub Desktop.
Save rbf/2c6559311acfe28ad097f2704e08345a to your computer and use it in GitHub Desktop.
Draft for @rbf/parcel-transformer-csv-to-json
{
"extends": "@parcel/config-default",
"transformers": {
"*.csv": [
"@rbf/parcel-transformer-csv-to-json"
]
}
}
// DOC: https://parceljs.org/plugin-system/authoring-plugins
// DOC: https://parceljs.org/plugin-system/transformer/
const {Transformer} = require("@parcel/plugin");
const csvtojson=require("csvtojson");
module.exports = new Transformer({
async transform({asset}) {
let csvStr = await asset.getCode();
let jsObj = await csvtojson().fromString(csvStr);
// As JSON, i.e. JSON.parse used in the final file.
asset.type = 'json';
asset.setCode(JSON.stringify(jsObj));
// Directly as JS object. Faster on the client as no parsing is needed,
// but object keys are not obfuscated by javascript-obfuscator.
// asset.type = 'js';
// asset.setCode(`module.exports = ${JSON.stringify(jsObj)}`);
return [asset];
}
});
{
"name": "@rbf/parcel-transformer-csv-to-json",
"version": "0.0.1",
"description": "Transformer plugin for Parcel v2 to convert csv files to json.",
"engines": {
"parcel": "2.x"
},
"main": "src/index.js",
"keywords": [
"parcel",
"parceljs",
"parcel-transformer",
"parcel-plugin",
"csv-to-json",
"csv",
"json"
],
"repository": {
"type": "git",
"url": "git+https://github.com/rbf/parcel-transformer-csv-to-json.git"
},
"author": "https://github.com/rbf",
"license": "MIT",
"bugs": {
"url": "https://github.com/rbf/parcel-transformer-csv-to-json/issues"
},
"homepage": "https://github.com/rbf/parcel-transformer-csv-to-json#readme",
"dependencies": {
"@parcel/plugin": "^2.3.1",
"csvtojson": "2.0.10"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment