json - jq 打印版本号是否为依赖项或开发依赖项
问题描述
最近遇到了 jq 库,https: //stedolan.github.io/jq/它有望解决我面临的问题。给定一个包名称,我希望能够打印它的 devdependency 或依赖关系,并打印该行以便我获得版本号。
如果我输入“拆分”:
预期输出:
依赖项,“拆分”:“0.3.0”。
示例包.json
{
"name": "universe",
"devDependencies":
{
"escape-html": "^1.0.3",
"lucene-query-parser": "^1.0.1"
},
"dependencies":
{
"async": "^0.2.10",
"npm2es": "~0.4.2",
"optimist": "~0.6.0",
"request": "~2.30.0",
"skateboard": "^1.5.1",
"split": "0.3.0",
"weld": "^0.2.2"
}
}
凭借我对 jq 库的有限经验,我能够获得依赖项/devDependency 的真值或假值,但我需要获得上述预期输出。任何让我更接近上述预期输出的东西也很好。
这是我的查询:
jq -c '{dependencies: .dependencies, devDependencies: .devDependencies}' package.json | jq .[] | jq'包含({“拆分”})'
解决方案
这是一个简单的(如果相当行人)解决方案:
.devDependencies[$name] as $v
| if $v then "devDependencies, \"\($name)\": \"\($v)\""
else .dependencies[$name] as $v
| if $v then "dependencies, \"\($name)\": \"\($v)\"" else empty end
end
调用
jq --arg name split -r -f program.jq input.json
更经济
{devDependencies,dependencies}
| map_values(.[$name])
| to_entries[]
| select(.value)
| "\(.key), \"\($name)\": \"\(.value)"
更笼统
(paths | select( .[-1] == $name )) as $p
| "\($p[-2]), \"\($name)\": \"\(getpath($p))\""
推荐阅读
- php - PHP 面向对象的 num_rows 为 0
- matlab - Izhikevich 神经元模型 - 方程
- javascript - javascript - 字母数字和特殊字符的正则表达式
- c++ - 在 C++14 中,在新表达式的维度中使用双精度值是否有效?
- c# - 使用 ReSharper 删除评论
- java - 如何实现按两次以退出所有活动
- django - 如何使用另一个模型查询 django 模型?
- javascript - 在 MorphSVG 中悬停时更改渐变背景
- java - 有什么方法可以通过@ExceptionHandler 将多种错误类型放入一个对象中
- javascript - 使用 chart.js 刷新图表的图像