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/mypackage
Schlü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"
}
}