php composer:如何找到软件包的确切版本?

z9gpfhce  于 12个月前  发布在  PHP
关注(0)|答案(8)|浏览(763)

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

有什么想法吗

ha5z0ras

ha5z0ras1#

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

composer.phar show

将显示当前安装的所有软件包及其版本信息。(这在以前版本的Composer中仅在使用现已弃用的-i选项时显示。
要查看更多详细信息,请同时指定包的名称:

composer.phar show monolog/monolog

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

relj7zay

relj7zay2#

你可以这样使用composer show:

composer show package/name
kmbjn2e3

kmbjn2e33#

如果你只是想得到输出作为软件包版本号,像这样:1.7.51.x-devdev-master
Linux控制台代码段(composer & sed):

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

or(composer,grep & cut):

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

a7qyws3x4#

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

composer show "monolog/monolog" --all

您还可以指定版本

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

2ic8powd5#

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

composer show |grep packagename

例如

composer show |grep monolog

如果你没有安装git,你可以从this link安装grep程序,将它与环境变量链接,然后在**Cmd**中编写与之前相同的命令
如果你不知道如何将程序与环境变量链接,view this link链接后,在上面写同样的命令

pbossiut

pbossiut6#

从技术上讲,“dev-master”是您最终使用的确切版本。它是开发分支,因此是最新版本。
查找composer软件包可用版本的最佳位置是Packagist,因为当您安装软件包时,composer就是从那里加载版本的。monolog版本在http://packagist.org/packages/monolog/monolog上列出。

7d7tgy0s

7d7tgy0s7#

如果你想在PHP内部检查版本,你可以使用composer Runtime Utilities:

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

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

ewm0tg9j

ewm0tg9j8#

要按名称查找软件包,运行以下命令(laravel就是一个例子)

composer search laravel

要查找有关软件包的信息,请运行以下命令(laravel/laravel就是一个例子)

composer show -a laravel/laravel

相关问题