ChatGPT解决这个技术问题 Extra ChatGPT

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

假设我正在编写一个库 A,它依赖于另一个库,例如 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.*"
    }

有任何想法吗?

这个问题的一些相关提示:如果您使用 PhpStorm 作为您的 IDE,任何 composer.json 文件都会在每个依赖项旁边显示您已安装的实际版本。

M
Mr. Lance E Sloan

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

composer.phar show

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

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

composer.phar show monolog/monolog

这将显示很多东西,包括提交 MD5 哈希、源 URL、许可证类型等。


php composer.phar show -aphp composer.phar show package/name 也很有帮助。
对于 dev-master 包,这很有用,因为它还显示提交哈希。所以你需要去 GitHub,找到那个提交哈希,检查日期,然后找到日期最近的标签,才能真正找出你正在使用的“版本”
它也可以在 composer.lock 文件中找到。
C
Chris Forrence

您可以像这样使用作曲家表演:

composer show package/name

h
hakre

如果您只想将输出作为软件包版本号获取,例如:1.7.5 或 1.x-dev 或 dev-master。

Linux 控制台片段(composer & sed):

composer show 'monolog/monolog' | sed -n '/versions/s/^[^0-9]\+\([^,]\+\).*$/\1/p'

或(作曲家,grep & cut):

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

M
Mohsen

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

composer show "monolog/monolog" --all

您也可以指定版本

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

n
naderman

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

查找 composer 包的可用版本的最佳位置是 Packagist,因为这是 composer 在您安装包时加载版本的地方。独白版本列在 http://packagist.org/packages/monolog/monolog 上。


E
Eng_Farghly

如果您使用 git version control system,您将轻松搜索任何包

composer show |grep packagename

例如

composer show |grep monolog

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

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


K
Koeno

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

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

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