Ghost/ghost/members-csv
Fabien O'Carroll 474e052b60 Bumped @tryghost/members-csv to 1.0.0-rc.3
no-issue

We would like to release @tryghost/members-csv as version 1.0.0 but
lerna will only allow us to release packages which have had changes in
them since their last release. Well, this is a change. And it's solely
for the purpose of allowing us to release 1.0.0. This version is not
tagged, nor is it published to npm.
2021-03-10 17:20:54 +00:00
..
lib Updated parsing subscriptions for member 2021-02-23 11:21:48 +00:00
test Refactored members-csv to remove unused columnsToExtract 2020-12-04 10:10:59 +00:00
.eslintrc.js Initialized members-csv package 2020-06-19 18:54:48 +12:00
index.js Fixed module paths 2020-06-19 19:52:21 +12:00
LICENSE 2021 2021-01-25 16:34:32 +00:00
package.json Bumped @tryghost/members-csv to 1.0.0-rc.3 2021-03-10 17:20:54 +00:00
README.md 2021 2021-01-25 16:34:32 +00:00

Members Csv

Install

npm install @tryghost/members-csv --save

or

yarn add @tryghost/members-csv

Usage

There are 2 parts to this package: CSV to JSON serialization and JSON to CSV serialization. The module exposes 2 methods to fullfil these: parse and unparse respectively.

To parse CSV file and convert it to JSON use parse method, e.g.:

const {parse} = require('@tryghost/members-csv');

const mapping = {
    email: 'csv_column_containing_email_data',
    name: 'csv_column_containing_names_data'
}
const membersJSON = await parse(csvFilePath, mapping);

csvFilePath - is a path to the CSV file that has to be processed mapping - optional parameter, it's a hash describing custom mapping for CSV columns to JSON properties

Example mapping for CSV having email under correo_electronico column would look like following:

{
    email: 'correo_electronico'
}

To unparse JSON to CSV compatible with members format use following:

const {unparse} = require('@tryghost/members-csv');

const members = [{
    email: 'email@example.com',
    name: 'Sam Memberino',
    note: 'Early supporter'
}];

const membersCSV = unparse(members);

console.log(membersCSV);
// -> "id,email,name,note,subscribed_to_emails,complimentary_plan,stripe_customer_id,created_at,deleted_at,labels\r\n,email@example.com,Sam Memberino,Early supporter,,,,,,"

Develop

This is a mono repository, managed with lerna.

Follow the instructions for the top-level repo.

  1. git clone this repo & cd into it as usual
  2. Run yarn to install top-level dependencies.

Run

  • yarn dev

Test

  • yarn lint run just eslint
  • yarn test run lint and tests

Copyright & License

Copyright (c) 2013-2021 Ghost Foundation - Released under the MIT license.