Skip to content

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

Notifications You must be signed in to change notification settings

andyburke/boxcutter

Repository files navigation

Boxcutter

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

Installation

Local (recommended)

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.

About

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

Resources

Stars

Watchers

Forks

Packages

No packages published