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:
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"
}
const Boxcutter = require( 'boxcutter' );
const boxcutter = Boxcutter.create();
boxcutter.load( './package.json' );
console.log( boxcutter.get( 'version' ) );
boxcutter.read( '{ "foo": "bar" }' );
Reads the given JSON into the instance.
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' );
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
} );
console.log( boxcutter.serialize( {
indent: 4
} ) );
Serializes the current state to JSON with the given options.