fs-write-data
TypeScript icon, indicating that this package has built-in type declarations

1.0.5 • Public • Published

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!

Package Sidebar

Install

npm i fs-write-data

Weekly Downloads

8

Version

1.0.5

License

Apache-2.0

Unpacked Size

29.9 kB

Total Files

9

Last publish

Collaborators

  • sramam