I'm trying to add or edit a variable in my package.json from a shell script. So if i have a package.json like this:
{ "name": "my-project", "description": "Project by @DerZyklop", "version": "0.0.0", ...
I want a command like
npm config set foo bar
that adds a new field like
{ "name": "my-project", "description": "Project by @DerZyklop", "foo": "bar", "version": "0.0.0", ...
...but unfortunately npm config set
just edits the ~/.npmrc
and not my package.json.
you can just open it with nano and edit it manually...
json file is present, npm install will install the exact versions specified. The package-lock. json is not meant to be human-readable, and it's not meant to be edited manually.
npm ci will install packages based on package-lock. json file and if the file does not exist or does not match the packages specified in the package. json it will throw an error and fail.
The package.json
is just a json
file, so you could use the tool json
. To install it use:
npm install -g json
Then you can edit a file in-place. More information here.
$ cat package.json { "name": "my-project", "description": "Project by @DerZyklop", "version": "0.0.0" } $ json -I -f package.json -e "this.foo=\"bar\"" json: updated "package.json" in-place $ cat package.json { "name": "my-project", "description": "Project by @DerZyklop", "version": "0.0.0", "foo": "bar" }
If you don't want to install sponge or json, you can also do
echo "`jq '.foo="bar"' package.json`" > package.json
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With