1.1.1 • Published 4 years ago

@rogerpence/edit-package-json v1.1.1

Weekly downloads
31
License
ISC
Repository
github
Last release
4 years ago

NPM package: edit-package-json

edit-package-json is an NPM package that makes changes to package.json files. It can be used on the command line (as editPackageJson) or from within a Node app.

edit-package-json's primary purpose is to add scripts keys and values to create scriptable installs. For example, during a scripted install of Tailwind, you might want to add a script option or two for compiling Tailwind.

NPM user COLEWW posted a package named npm-add-script to NPM in 2016 or so. That project has since been archived as read-only on GitHub. I used some of COLEWW's code (especially his example for using the yargs package) in this package.

Installation

Install edit-package-json either locally:

npm install --save-dev @rogerpence/edit-package-json

or globally:

npm install -g @rogerpence/edit-package-json

Command line syntax

The command line syntax is:

npx editpackagejson <options>

where options are:

OptionShortcutDescriptionRequired
--parent-pparent element name nameno, defaults to 'scripts'
--key-kkey nameyes
--value-vkey valueyes
--force-fforce updateno, defaults to false
--help-hshow help

If you attempt to update an existing value, the operation fails with an exception, unless you specific -f or --force.

See the note below about using embedded blanks in the --value option.

Because edit-package-json is intended primarily to add scripts values the default parent element is scripts.

Example:

package.json before:

"scripts": {
    "test": "mocha",
}

Run editpackagejson

$ npx editpackagejson -k "dev:tw" -v "postcss..."

causes dev:key and its value have been added to the scripts element.

"scripts": {
    "test": "mocha",
    "dev:tw": "postcss..."
}

Calling editPackageJson in Node.js

Pass a JavaScript object with the necessary option names (omitting the leading dashes):

const editPackageJson = require('@rogerpence/edit-package-json');

const args = {
    key: 'shakey',
    value: 'cross-env NODE_ENV=dev ...',
    force: true
}

editPackageJson(args)

Key values with embedded blanks on the command line

Arguments passed on the command with embedded blanks cause command processors trouble. Use the guide below for platform-specific ways to delimit values with embedded blanks... or let edit-package-json do the hard work by using a plus sign (+) anywhere you a want a blank. For example, this:

npx editpackagejson -k "dev:tw" -v "cross-env+NODE_ENV=dev+mycommand"

resolves to this value in the package.json scripts.dev:tw value:

cross-env NODE_ENV=dev mycommand

It's probably easiest to use the plus sign feature and get on with your life. However, if you rather do it the hard way, use the guide below:

PowerShell

Use '"" and ""' to delimit the value:

npx editpackagejson -k "dev:tw" -v '""cross-env NODE_ENV=dev mycommand""'

However, in PowerShell if you'd like build a key value with PowerShell's string interpolation, you need to use this convoluted syntax:

$value = "'`"`"important stuff with ./$($devDirectory)/css/`"`"'"

to cause PowerShell to pass the correct value to edit-package-json. This error-prone convolution was the inspiration for adding the plus sign (+) feature.

DOS command prompt and Bash command line:

Use "\" and "\" to delimit the value:

npx editpackagejson -k "dev:tw" -v "\"cross-env NODE_ENV=dev mycommand"\"
1.1.1

4 years ago

1.1.0

4 years ago

1.0.5

4 years ago

1.0.2

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago