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

时间:2016-02-12 16:56:36

标签: json bower versioning semantic-versioning

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

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

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

bower info <thepackagename> 显示此信息 - 它会显示有关bower存储库当前可用内容的信息(例如,即使我bower info apackageIdonthaveinstalled它仍会显示包含版本号的有效JSON结构。

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

3 个答案:

答案 0 :(得分:26)

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

此外,还有一个命令可以查看项目所有bower组件的版本 - 此列表可以是一个方便的CI artefact: grep "version\"\:" bower_components/*/.bower.json enter image description here

答案 1 :(得分:7)

你有没有试过&#34; bower list --json = 0 --offline&#34;。

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

答案 2 :(得分: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/'

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

由于各种原因,这非常难看:

  • 我必须重复包名(虽然这可能会有所改进 使用更好的Perl脚本过滤行,我只是懒惰。)

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

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

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