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!

Dependencies (7)

Dev Dependencies (24)

Package Sidebar

Install

npm i fs-write-data

Weekly Downloads

6

Version

1.0.5

License

Apache-2.0

Unpacked Size

29.9 kB

Total Files

9

Last publish

Collaborators

  • sramam