fs-write-data
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 = ; # file format determined from extension;;;;; # file format explicitly specified - overrides file extension# NOTE: the command will write `/path/to/file.data.ini`;
Development Tooling
Related
Dependencies
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
License
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!