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

Hap*_*per 88 php package-managers dependency-management composer-php

假设我正在编写一个库A,这取决于另一个库,例如monolog.

我想安装最新版本的monolog,所以我把它放在composer.json中:

{
    "require": {
        "monolog/monolog": "*.*.*"
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我跑了$ 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": [

    ]
}
Run Code Online (Sandbox Code Playgroud)

我需要这个版本,因为我想把我的库绑定到一组特定的版本,例如:如果我发现版本是1.3.5,在我的composer.json中,我想把这样的东西:

    "require": {
        "monolog/monolog": "1.3.*"
    }
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Ros*_*ane 150

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

composer.phar show
Run Code Online (Sandbox Code Playgroud)

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

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

composer.phar show monolog/monolog
Run Code Online (Sandbox Code Playgroud)

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

  • `php composer.phar show -a`和`php composer.phar show package/name`也都很有帮助. (10认同)
  • 它也可以在 composer.lock 文件中找到。 (3认同)

小智 28

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

composer show package/name
Run Code Online (Sandbox Code Playgroud)


Eng*_*hly 9

如果您使用git 版本控制系统,您将轻松搜索任何包

composer show |grep packagename
Run Code Online (Sandbox Code Playgroud)

例如

composer show |grep monolog
Run Code Online (Sandbox Code Playgroud)

如果您没有安装 git,您可以从此链接安装 grep 程序将其与环境变量链接并在中写入相同的先前命令Cmd

如果您不知道如何将程序与环境变量链接,请在链接后查看此链接,在上面编写相同的命令


Jim*_*mix 8

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

Linux控制台代码段:

composer show 'monolog/monolog' | grep 'versions' | grep -o -E '\*\ .+' | cut -d' ' -f2 | cut -d',' -f1;
Run Code Online (Sandbox Code Playgroud)


nad*_*man 6

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

寻找Composer软件包可用版本的最佳位置是Packagist,因为这是Composer在您安装软件包时从中加载版本的地方。Monolog 版本在http://packagist.org/packages/monolog/monolog上列出。


Moh*_*sen 5

你可以使用 show all,特别是当没有 package.json 文件时,从 packagist.org 获取可用的包:

composer show "monolog/monolog" --all
Run Code Online (Sandbox Code Playgroud)

您也可以指定版本

composer show "monolog/monolog" 1.* --all
Run Code Online (Sandbox Code Playgroud)


Koe*_* B. 5

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

\Composer\InstalledVersions::getVersion('my/package')
Run Code Online (Sandbox Code Playgroud)

请参阅https://getcomposer.org/doc/07-runtime.md了解更多信息。