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

Posted

技术标签:

【中文标题】作曲家:如何找到一个包的确切版本?【英文标题】:composer: How to find the exact version of a package? 【发布时间】:2012-05-27 21:51:15 【问题描述】:

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

有什么想法吗?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

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,找到那个commit hash,检查日期,然后找到日期最近的标签,才能真正找出你正在使用的“版本” 也可以在 composer.lock 文件中找到。【参考方案3】:

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

composer show package/name

【讨论】:

【参考方案4】:

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

Linux 控制台 sn-p (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;

【讨论】:

【参考方案5】:

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

composer show "monolog/monolog" --all

你也可以指定版本

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

【讨论】:

【参考方案6】:

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

composer show |grep packagename

举例

composer show |grep monolog

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

【讨论】:

【参考方案7】:

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

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

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

【讨论】:

以上是关于作曲家:如何找到一个包的确切版本?的主要内容,如果未能解决你的问题,请参考以下文章

composer 如何处理同一个包的多个版本?

如何在 github 和 packagist 上创建包的版本?特定于 PHP

奏鸣曲包的作曲家原型

Laravel包的作曲家需要

如何作曲家安装最新的require-dev和最低的require

gitlab - 作曲家包的 ci