web-dev-qa-db-fra.com

Editez package.json à partir de la ligne de commande

J'essaie d'ajouter 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 édite simplement le ~/.npmrc et non mon package.json.

35
DerZyklop

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"
}
59
enrico.bacis

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
0
Bertrand Martel