作曲者:如何找到软件包的确切版本?


103

假设我正在编写一个库A,该库依​​赖于另一个库,例如monolog。

我想安装最新版本的monolog,因此将其放在composer.json中:

{
    "require": {
        "monolog/monolog": "*.*.*"
    }
}

然后我跑$ php composer.phar install

我期待在composer.lock内找到安装的版本,但是不存在:

{
    "hash": "d7bcc4fe544b4ef7561918a8fc6ce009",
    "packages": [
        {
            "package": "monolog/monolog",
            "version": "dev-master",
            "source-reference": "2eb0c0978d290a1c45346a1955188929cb4e5db7"
        }
    ],
    "packages-dev": null,
    "aliases": [

    ],
    "minimum-stability": "dev",
    "stability-flags": [

    ]
}

我需要版本,因为我想将我的库绑定到一组特定的版本,例如:如果我发现版本是1.3.5,请在我的composer.json文件中输入以下内容:

    "require": {
        "monolog/monolog": "1.3.*"
    }

有任何想法吗?

Answers:


170

我知道这是一个老问题,但是...

composer.phar show

将显示所有当前安装的软件包及其版本信息。(仅当使用现在不建议使用的-i选项时,才在Composer的早期版本中显示此信息。)

要查看更多详细信息,请同时指定包的名称:

composer.phar show monolog/monolog

这将显示许多内容,包括提交MD5哈希,源URL,许可证类型等。


11
php composer.phar show -a并且php composer.phar show package/name对您都有帮助。
主教

1
对于dev-master软件包,这很有用,因为它还显示了提交哈希。因此,您需要转到GitHub,找到该提交哈希,检查日期,然后找到带有最近日期的标记,以真正找出您正在使用的“版本”
andrewtweber '16

2
也可以在composer.lock文件中找到它。
哈菲兹


13

如果您只是想将输出作为软件包版本号,例如:1.7.51.x-devdev-master

Linux控制台代码段:

composer show 'monolog/monolog' | grep 'versions' | grep -o -E '\*\ .+' | cut -d' ' -f2 | cut -d',' -f1;


2

您可以使用全部显示,特别是在没有package.json文件的情况下,可以从packagist.org获取可用的软件包:

composer show "monolog/monolog" --all

您也可以指定版本

composer show "monolog/monolog" 1.* --all
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.