¿Cómo soluciono una expresión jq que devuelve un error de expresión de ruta no válida?

¿Cómo soluciono una expresión jq que devuelve un error de expresión de ruta no válida?

Tengo un archivo package.json que se ve así:

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

Quiero actualizar la versión @mycompany/mypackage a "1.2.1". Encontré artículos comoesteyestesugiriendo jq.

Cuando ejecuto mi comando jq jq -r '"dependencies.@mycompany/mypackage" |= "1.2.1"' package.json, aparece este error:jq: error (at temp.json:13): Invalid path expression with result "dependencies.@mycompany/m...

Por lo que puedo decir, la ruta es correcta cuando uséjq jugar.

¿Alguien tiene alguna sugerencia sobre lo que está mal?

Respuesta1

Estás bastante cerca. Es necesario citar la @mycompany/mypackageclave, porque tanto @y /son caracteres especiales, pero debe citarse por separado, no como parte de todo el filtro. También necesita un enlace .para consultar el objeto raíz. Esto debería 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"
  }
}

información relacionada