使用 Stack 获取已用库的版本

Get version of used library with Stack

我有一个使用 Stack 构建的 Haskell 项目。

在我的 Cabal 文件中,我添加了一堆库作为依赖项,例如 tls

是否有命令可以获取我的项目中使用的特定库的版本?

我从 stack.yaml 得知我正在使用解析器 lts-14.16。因此,我可以访问 the page of this LTS on Stackage 并在那里查找我的库的版本号。但我希望有一种更直接的方法,即使用命令行来执行此操作。

stack ls dependencies

此命令列出当前项目的依赖项及其版本,如前所述here。它产生如下输出:

StateVar 1.2
aeson 1.4.6.0
ansi-terminal 0.9.1
array 0.5.3.0
asn1-encoding 0.9.6
asn1-parse 0.9.5
asn1-types 0.3.3
async 2.2.2
attoparsec 0.13.2.3
base 4.12.0.0

使用 grep 选择您感兴趣的图书馆:

stack ls dependencies 2>/dev/null | grep "^tls"

我们使用 2>/dev/null 来消除 Stack 可能产生的关于该项目的任何警告。

如果您想进一步可视化您的依赖关系,例如作为图形或树,请使用 stack dot