jq式が間違ったパス式エラーを返す問題を解決するには?

jq式が間違ったパス式エラーを返す問題を解決するには?

次のpackage.jsonファイルがあります。

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

@mycompany/mypackageのバージョンを「1.2.1」に更新したいです。似たような記事が見つかりました。これそしてこれjqをお勧めします。

jqコマンドを実行すると、jq -r '"dependencies.@mycompany/mypackage" |= "1.2.1"' package.json次のエラーが発生します。jq: error (at temp.json:13): Invalid path expression with result "dependencies.@mycompany/m...

私が知る限り、私が使用するときのパスは正しいです。JQプレイ

誰でもどんな提案がありますか?

ベストアンサー1

あなたはすでに近いです。@mycompany/mypackage@は両方とも特殊文字なので、キーを引用する必要があり/ますが、フィルタ全体の一部ではなく個別に引用する必要があります。.ルートオブジェクトを照会するにはリーダーも必要です。これは働きます:

$ 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"
  }
}

おすすめ記事