A utility knife for interacting with package.json (or other json files)
  • JavaScript 100%
Find a file
2018-05-31 15:57:28 -07:00
bin change how Boxcutter is required from CLI to fix npx issue 2018-05-31 15:57:28 -07:00
test API and CLI changes, support reading from stdin 2018-03-16 19:21:40 -07:00
.gitignore Initial commit 2016-03-01 20:43:22 -08:00
.jsbeautifyrc Initial commit 2016-03-01 20:43:22 -08:00
.jshintrc Initial commit 2016-03-01 20:43:22 -08:00
boxcutter.png Update image 2016-03-01 20:48:02 -08:00
index.js API and CLI changes, support reading from stdin 2018-03-16 19:21:40 -07:00
package-lock.json API and CLI changes, support reading from stdin 2018-03-16 19:21:40 -07:00
package.json change how Boxcutter is required from CLI to fix npx issue 2018-05-31 15:57:28 -07:00
README.md update readme 2018-03-16 19:26:46 -07:00

Boxcutter

A utility knife for interacting with package.json (or other json files)

Installation

npm install boxcutter --save

Global

sudo npm install boxcutter -g

Usage

CLI

Walks up your directory tree looking for a package.json file. If it finds one, it will load it and allow you to interact with it:

boxcutter <command>

Commands:
  boxcutter get <key>          get the value of <key>
  boxcutter set <key> <value>  set <key> to <value>

Options:
  --version  Show version number                                       [boolean]
  --stdin    read json from stdin vs. from a file or package.json
                                                                [default: false]
  --file     the file to search up the directory path for
                                                       [default: "package.json"]
  --indent   indentation level for json output                      [default: 2]
  --save     write changes back to input file                   [default: false]
  --help     Show help                                                 [boolean]

Example:

> boxcutter get version
1.0.0
> boxcutter set version 1.0.1
> boxcutter get version
1.0.1
>

You may optionally use the --file flag to specify a json file other than package.json:

> boxcutter --file apidoc.json get name
Boxcutter
> boxcutter --file apidoc.json set name "Boxcutter API Documentation"
> boxcutter --file apidoc.json get name
Boxcutter API Documentation

You may can also specify --stdin to read json from stdin instead of from a file:

> echo "{ \"foo\": \"bar\" }" | boxcutter --stdin get foo
bar
> echo "{ \"foo\": \"bar\" }" | boxcutter --stdin set foo yak
{
    "foo": "yak"
}

API

const Boxcutter = require( 'boxcutter' );
const boxcutter = Boxcutter.create();

boxcutter.load( './package.json' );
console.log( boxcutter.get( 'version' ) );

read( json )

boxcutter.read( '{ "foo": "bar" }' );

Reads the given JSON into the instance.

load( filename )

boxcutter.load( './package.json' );

Loads the given package.json. Can take a relative or absolute path.

get( key )

const value = boxcutter.get( 'version' );

Gets the given key. Uses Delver to retrieve the value, so you can use dot and bracket syntax:

const testScript = boxcutter.get( 'scripts.test' );
const firstKeyword = boxcutter.get( 'keywords[0]' );

set( key, value )

boxcutter.set( 'version', '1.0.1' );

Sets the given key to the value specified. Uses Delver to set the value, so you can use dot and bracket notation:

boxcutter.set( 'scripts.test', 'tape test/*.js' );
boxcutter.set( 'keywords[0]', 'boxcutter' );

async save( filename[, options] )

await boxcutter.save( './package.json' );

Saves the current settings to an output file. You can pass options to control the output, eg:

await boxcutter.save( './package.json', {
    indent: 4
} );

serialize( [options] )

console.log( boxcutter.serialize( {
    indent: 4
} ) );

Serializes the current state to JSON with the given options.