Skip to content

API/CLI to convert input JSON to one of multiple output formats {json, yaml, ini, toml}.

License

Notifications You must be signed in to change notification settings

tufan-io/fs-write-data

Repository files navigation

fs-write-data

npm license travis status Build status Coverage Status David David Commitizen friendly

NPM

Converts input JSON to one of multiple output formats {json, yaml, ini, toml}.

Provides a CLI and API interface to underlying capability, making conversion of data-formats a breeze, especially when coupled with fs-read-data

Why

It's common to have data files in one of multiple well-known formats - sometimes just for config, sometimes for more sophisticated declarative definitions.

This is a tool to help you work with such files without getting in your way.

Great for file format conversions or reformatting of input files.

Compared to a single spurious bable module installation, this additional weight of multiple file-serializers was considered acceptable collateral-weight.

Installation

npm install fs-write-data
yarn install fs-write-data

Usage

CLI

  Usage: write-data [options]

  reads JSON from input/stdin and writes to fname/stdout


  Options:

    -V, --version            output the version number
    -x, --format <format>    output format {json, yaml, ini, toml}
    -i, --input <input>      input file, else reads from stdin
    -o, --output <output>    output file, else write to stdout
    -p, --options <options>  options to the underlying serializers, as stringified JSON
    -h, --help               output usage information

Use cases

Coupled with fs-read-data, it's reasonable trivial to achieve file format conversions.

# yaml to ini conversion
npx read-data ./data.yaml | npx write-data ./data.ini

# json formatting
npx read-data ./data.json > ./data.json

# yaml formatting
npx read-data ./data.yaml | npx write-data ./data.yaml

API

/**
 * Serializes `data` using appropriate serializer and write to file or returns a string.
 *
 * Serializers used:
 *     [js-yaml](https://www.npmjs.com/package/js-yaml)
 *     [ini](https://www.npmjs.com/package/ini)
 *     [tomlify](https://www.npmjs.com/package/tomlify-j0.4)
 *
 * @param fname file to write to. Extension is used as hint for format. If missing, returns a string.
 * @param data the JavaScript object to serialize
 * @param ext serialization format. Overrides file extension
 * @param opts options to the individual serializers - expects a JSON object.
 */
const write = require('fs-write-data');

# file format determined from extension
write(`/path/to/file/data.yaml`, data);
write(`/path/to/file/data.ini`, data);
write(`/path/to/file/data.yml`, data);
write(`/path/to/file/data.toml`, data);
write(`/path/to/file/data.json`, data);

# file format explicitly specified - overrides file extension.
# NOTE: the command will write `/path/to/file.data.ini`
write(`/path/to/file/data.yaml`, data, 'ini');

Development Tooling

Related

fs-read-data

Dependencies

This is an aggregation module, much like fs-extra. It's built upon the shoulders of libraries that provide it's core functionality.

js-yaml ini tomlify

Support cast: awaiting commander

License

Apache-2.0

Code of Conduct

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Support

Bugs, PRs, comments, suggestions welcomed!

About

API/CLI to convert input JSON to one of multiple output formats {json, yaml, ini, toml}.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published