как исправить выражение 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"
  }
}

Связанный контент