如何找出实际安装的凉亭包的版本?

And*_*ier 28 versioning json semantic-versioning bower

通常,bower.json文件指定一些依赖关系,但通常表达这些依赖关系,以便它们允许使用一系列版本的bower包(例如>=1.0,这意味着任何高于1.0的版本).

我有一个自动化流程,需要立即找到该系统上实际安装的bower包的版本.

如何以编程方式(仅版本本身)找到它,理想情况下使用标准的Unix命令行工具/ bower命令?

bower info <thepackagename>没有表明这一点-它显示了什么是当前可从凉亭库信息(例如,即使我做bower info apackageIdonthaveinstalled它仍然会显示一个包含版本号的有效的JSON结构).

cat bower_components/thepackagename/bower.json | node_modules/json/lib/json.js version适用于某些软件包(假设json安装了npm软件包),但并非全部(例如jquery 2.2.0的bower软件包不包含bower.json).

Art*_*iev 26

这是一个grep命令来做到这一点: grep "version\"\:" bower_components/thepackagename/.bower.json

此外,还有一个命令可以查看项目所有bower组件的版本 - 这个列表可以是一个方便的CI artefact: grep "version\"\:" bower_components/*/.bower.json 在此输入图像描述


小智 7

你有没有试过"凉亭列表--json = 0 --offline".

它将列出所有凉亭包信息.

  • `bower list`对我来说是正确答案 (3认同)

And*_*ier 6

我现在发现的最好的方法,似乎适用于我目前遇到的每个软件包,它是:

cat bower_components/thepackagename/.bower.json | node_modules/json/lib/json.js version

(注意额外..bower.json).

bower似乎存储了有关已安装软件包的一些元数据.bower.json,其中包括已安装的版本.

到目前为止我提出的最好的是:

bower list | grep jquery | perl -pe 's/.*jquery#(.*?) .*$/$1/'
Run Code Online (Sandbox Code Playgroud)

(例如,如果我感兴趣的包是jquery).

由于各种原因,这很丑陋:

  • 我必须重复包名称(虽然这可能会通过更好的Perl脚本来改进,它也会过滤行,我只是在懒惰).

  • bower list 获取有关所有已安装软件包的信息,而不仅仅是我感兴趣的软件包 - 其余信息将被丢弃.

  • bower list 似乎需要互联网连接来检查注册表,否则它会失败.

有兴趣看看是否可以改进,尤其是最后一点.