A utility knife for interacting with package.json (or other json files)
npm install boxcutter --save
sudo npm install boxcutter -g
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
const Boxcutter = require( 'boxcutter' );
const boxcutter = Object.assign( {}, Boxcutter.Boxcutter );
boxcutter.load( './package.json' );
console.log( boxcutter.get( 'version' ) );
boxcutter.load( './package.json' );
Loads the given package.json. Can take a relative or absolute path.
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]' );
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' );
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 );
}