作曲家:如何找到包的确切版本?

时间:2012-05-21 11:38:44

标签: php dependency-management package-managers composer-php

假设我正在编写一个库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.*"
    }

有什么想法吗?

10 个答案:

答案 0 :(得分:139)

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

composer.phar show

将显示所有当前安装的软件包及其版本信息。 (仅在使用现已弃用的-i选项时才会在以前版本的Composer中显示。)

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

composer.phar show monolog/monolog

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

答案 1 :(得分:23)

您可以使用这样的作曲家节目:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p id="KATitle">Kalkulationsart</p>
<select name="Kalkulationsart" id="Kalkulationsart" size="1" type="text">
    <option value="0">Kalkulation per Verbrauch/100km</option>
    <option value="others">Kalkulation per Treibstoffverbrauch in Liter</option>
</select>

<p id="KMTitle" for="VerbrauchinL">Kraftstoffverbrauch in Liter/100km</p>
<input type="number" name="Verbrauch in L" id="VerbrauchinL" onkeyup="TKPJ()">

答案 2 :(得分:5)

如果您只是想获取软件包版本号的输出,例如: 1.7.5 1.x-dev dev-master

Linux控制台代码段:

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

答案 3 :(得分:4)

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

composer show "monolog/monolog" --all

您还可以指定版本

composer show "monolog/monolog" 1.* --all

答案 4 :(得分:2)

从技术上讲,“dev-master”是您最终在那里使用的确切版本。它是开发分支,因此也是最新版本。

查找作曲家程序包的可用版本的最佳位置是Packagist,因为这是作曲家从安装程序包时加载版本的地方。 monolog版本列在http://packagist.org/packages/monolog/monolog

答案 5 :(得分:2)

这是一个非常古老的问题,但是添加答案以便它可以帮助某人, 您也可以通过上传composer.josn和composer.lock文件

在线查看

http://www.drcomposer.com

希望这可以帮助某人。

答案 6 :(得分:1)

如果要查找laravel/framework版本,对于 Laravel 开发人员可能很有用。
composer show laravel/framework可能会返回带有其他依赖项的庞大列表,例如

name     : laravel/framework
...
versions : * v5.7.27
...
autoload
...
requires
...
requires (dev)
...
suggests
...
conflicts
...
replaces
...

因此,请改用composer show laravel/f*
f*模式将搜索所有以“ f”开头的软件包。
结果laravel/framework v5.7.27 The Laravel Framework.

答案 7 :(得分:0)

如果您使用的是 git version control system。您可以轻松搜索任何包

composer show |grep packagename

例如

composer show |grep monolog

如果你没有安装 git。您可以从 this link 安装 grep 程序。 并将其与环境变量链接,如果您不知道 how to link program with environment variables 链接后在上面写相同的命令,则可以查看此链接

答案 8 :(得分:0)

如果你想检查 PHP 本身的版本,你可以使用 composer Runtime Utilities:

\Composer\InstalledVersions::getVersion('my/package')

有关详细信息,请参阅 https://getcomposer.org/doc/07-runtime.md

答案 9 :(得分:-3)

你可以在github上找到它们。

Composer目前是1.1.0 https://github.com/Seldaek/monolog/tags

只需抓住您认为需要的标签即可。