web-dev-qa-db-de.com

Bearbeiten Sie package.json über die Befehlszeile

Ich versuche, eine Variable in meinem package.json aus einem Shell-Skript hinzuzufügen oder zu bearbeiten. Wenn ich also eine package.json habe: 

{
  "name": "my-project",
  "description": "Project by @DerZyklop",
  "version": "0.0.0",
  ...

Ich möchte einen Befehl wie

npm config set foo bar

das fügt ein neues Feld hinzu wie 

{
  "name": "my-project",
  "description": "Project by @DerZyklop",
  "foo": "bar",
  "version": "0.0.0",
  ...

... aber leider bearbeitet npm config set nur den ~/.npmrc und nicht meine package.json.

35
DerZyklop

Der package.json ist nur eine json-Datei, Sie können also das Tool json verwenden. Zur Installation verwenden Sie:

npm install -g json

Dann können Sie eine Datei direkt bearbeiten. Weitere Informationen hier .

Beispiel

$ 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

Sie können auch jq und sponge (Paket moreutils) wie folgt verwenden: 

jq '.foo="bar"' package.json | sponge package.json

Mit einer Umgebungsvariablen:

jq --arg h "$HOMEPAGE" '.homepage=$h' package.json | sponge package.json
0
Bertrand Martel