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
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.
npm install fs-write-data
yarn install fs-write-data
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
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
/**
* 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');
This is an aggregation module, much like fs-extra. It's built upon the shoulders of libraries that provide it's core functionality.
Support cast: awaiting commander
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.
Bugs, PRs, comments, suggestions welcomed!