wie behebe ich einen JQ-Ausdruck, der den Fehler „Ungültiger Pfad-Ausdruck“ zurückgibt?

wie behebe ich einen JQ-Ausdruck, der den Fehler „Ungültiger Pfad-Ausdruck“ zurückgibt?

Ich habe eine package.json-Datei, die so aussieht:

{
  "name": "service",
  "version": "1.0.0",
  "private": true,
  "description": "my service",
  "license": "none",
  "scripts": {
    "build": "tsc"
  },
  "dependencies": {
    "@mycompany/mypackage": "1.1.1"
  }
}

Ich möchte die Version von @mycompany/mypackage auf "1.2.1" aktualisieren. Ich habe Artikel wieDasUndDasschlage jq vor.

Wenn ich meinen jq-Befehl ausführe jq -r '"dependencies.@mycompany/mypackage" |= "1.2.1"' package.json, erhalte ich diese Fehlermeldung:jq: error (at temp.json:13): Invalid path expression with result "dependencies.@mycompany/m...

Soweit ich das beurteilen kann, ist der Pfad korrekt, wenn ich ihn verwendet habe.jq spielen.

Hat jemand einen Vorschlag, was nicht stimmt?

Antwort1

Du bist ziemlich nah dran. Du musst den @mycompany/mypackageSchlüssel in Anführungszeichen setzen, weil sowohl @als auch /Sonderzeichen sind, aber du musst ihn separat in Anführungszeichen setzen, nicht als Teil des gesamten Filters. Außerdem brauchst du eine führende Stelle, .um das Stammobjekt abzufragen. Das sollte funktionieren:

$ jq -r '.dependencies."@mycompany/mypackage" |= "1.2.1"' package.json
{
  "name": "service",
  "version": "1.0.0",
  "private": true,
  "description": "my service",
  "license": "none",
  "scripts": {
    "build": "tsc"
  },
  "dependencies": {
    "@mycompany/mypackage": "1.2.1"
  }
}

verwandte Informationen