parcel-transformer-csv
Version:
Import CSV as object through parcel
28 lines (26 loc) • 695 B
JavaScript
const { Transformer } = require("@parcel/plugin");
const Papa = require("papaparse");
module.exports = new Transformer({
async loadConfig({ config }) {
let { contents, filePath } = await config.getConfig([
".parcel-transformer-csv.json",
]) || {};
switch (typeof contents) {
case "string":
return JSON.parse(contents)
case "object":
return contents
default:
return {};
}
},
async transform({ asset, config }) {
asset.type = "js";
asset.setCode(
`module.exports = JSON.parse(${JSON.stringify(
JSON.stringify(Papa.parse(await asset.getCode(), config).data)
)})`
);
return [asset];
},
});