作曲家:如何找到一个包的确切版本?
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 -a
和 php composer.phar show package/name
也很有帮助。
对于dev-master
包,这很有用,因为它还显示了提交哈希。所以你需要去GitHub,找到那个commit hash,检查日期,然后找到日期最近的标签,才能真正找出你正在使用的“版本”
也可以在 composer.lock 文件中找到。【参考方案3】:
你可以像这样使用作曲家表演:
composer show package/name
【讨论】:
【参考方案4】:如果您只是想获得作为软件包版本号的输出,例如:1.7.5 或 1.x-dev 或 dev-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。
【讨论】:
以上是关于作曲家:如何找到一个包的确切版本?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 github 和 packagist 上创建包的版本?特定于 PHP