Editez package.json à partir de la ligne de commande

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 .

Exemple

 $ 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