J’essaie d’append ou de modifier une variable dans mon package.json à partir d’un script shell. Donc, si j’ai un package.json comme ceci:
{ "name": "my-project", "description": "Project by @DerZyklop", "version": "0.0.0", ...
Je veux une commande comme
npm config set foo bar
cela ajoute un nouveau champ comme
{ "name": "my-project", "description": "Project by @DerZyklop", "foo": "bar", "version": "0.0.0", ...
… mais malheureusement, npm config set
ne modifie que le ~/.npmrc
et non mon package.json.
Le package.json
est juste un fichier json
, vous pouvez donc utiliser l’outil json
. Pour l’installer utilisez:
npm install -g json
Ensuite, vous pouvez éditer un fichier sur place. Plus d’informations ici .
$ 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" }
Vous pouvez aussi utiliser jq et sponge (paquet moreutils) comme ceci:
jq '.foo="bar"' package.json | sponge package.json
Avec une variable d’environnement:
jq --arg h "$HOMEPAGE" '.homepage=$h' package.json | sponge package.json