如何修复返回无效路径表达式错误的 jq 表达式?

jus*_*mer 5 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"
  }
}
Run Code Online (Sandbox Code Playgroud)

我想将@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 play时,路径是正确的。

有没有人有什么建议?

Mic*_*zek 9

你很接近。您确实需要引用@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"
  }
}
Run Code Online (Sandbox Code Playgroud)