Skip to content

A utility knife for interacting with package.json

Notifications You must be signed in to change notification settings

cardoni/boxcutter

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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:

Usage: boxcutter <command>
  available commands:
    get               : get a value from the package.json
    set               : set a value in the package.json
    help <command>    : get help for the specified command
  options:
    --indent <num>    : will indent json output the specified number of spaces
    --file <filename> : will use specified json as input / output file

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

API

const Boxcutter = require( 'boxcutter' );
const boxcutter = Object.assign( {}, Boxcutter.Boxcutter );

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

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' );

save( filename[, options[, callback]] )

boxcutter.save( './package.json', function( error ) {
    if ( error ) {
        console.error( error );
    }
} );

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

boxcutter.save( './package.json', {
    json: {
        indent: 4
    }
}, function( error ) {
    if ( error ) {
        console.error( error );
    }
} );

If you call this method without a callback, it will execute synchronously and potentially throws, eg:

try {
    boxcutter.save( './package.json' );
}
catch( ex ) {
    console.error( ex );
}

or, with options but no callback:

try {
    boxcutter.save( './package.json', {
        json: {
            indent: 4
        }
    } );
}
catch( ex ) {
    console.error( ex );
}

About

A utility knife for interacting with package.json

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%