como faço para corrigir uma expressão jq que retorna um erro de expressão de caminho inválido?

como faço para corrigir uma expressão jq que retorna um erro de expressão de caminho inválido?

Eu tenho um arquivo package.json parecido com este:

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

Quero atualizar a versão @mycompany/mypackage para "1.2.1". Encontrei artigos comoesseeessesugerindo jq.

Quando executo meu comando jq jq -r '"dependencies.@mycompany/mypackage" |= "1.2.1"' package.json, recebo este erro:jq: error (at temp.json:13): Invalid path expression with result "dependencies.@mycompany/m...

Pelo que posso dizer, o caminho está correto quando useijq jogar.

Alguém tem uma sugestão do que está errado?

Responder1

Você está bem perto. Você precisa citar a @mycompany/mypackagechave, porque ambos @e /são caracteres especiais, mas você deve citá-la separadamente, não como parte de todo o filtro. Além disso, você precisa de um líder .para consultar o objeto raiz. Isso deve funcionar:

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

informação relacionada