假设我正在编写一个库 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.*"
}
有任何想法吗?
composer.json
文件都会在每个依赖项旁边显示您已安装的实际版本。
我知道这是一个老问题,但是...
composer.phar show
将显示所有当前安装的软件包及其版本信息。 (这仅在使用现已弃用的 -i
选项时在 Composer 的早期版本中显示。)
要查看更多详细信息,请同时指定包的名称:
composer.phar show monolog/monolog
这将显示很多东西,包括提交 MD5 哈希、源 URL、许可证类型等。
您可以像这样使用作曲家表演:
composer show package/name
如果您只想将输出作为软件包版本号获取,例如: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;
您可以使用 show all,特别是当没有 package.json 文件时,从 packagist.org 获取可用的包:
composer show "monolog/monolog" --all
您也可以指定版本
composer show "monolog/monolog" 1.* --all
从技术上讲,“dev-master”是您最终在那里使用的确切版本。它是开发分支,因此是最新版本。
查找 composer 包的可用版本的最佳位置是 Packagist,因为这是 composer 在您安装包时加载版本的地方。独白版本列在 http://packagist.org/packages/monolog/monolog 上。
如果您使用 git version control system,您将轻松搜索任何包
composer show |grep packagename
例如
composer show |grep monolog
如果您不安装 git,您可以从 this link 安装 grep 程序,将其与环境变量链接并在 Cmd
中编写相同的先前命令
如果您不知道如何将程序与环境变量链接,view this link 链接后在上面编写相同的命令
如果要检查 PHP 本身的版本,可以使用 composer Runtime Utilities:
\Composer\InstalledVersions::getVersion('my/package')
有关详细信息,请参阅 https://getcomposer.org/doc/07-runtime.md。
不定期副业成功案例分享
php composer.phar show -a
和php composer.phar show package/name
也很有帮助。dev-master
包,这很有用,因为它还显示提交哈希。所以你需要去 GitHub,找到那个提交哈希,检查日期,然后找到日期最近的标签,才能真正找出你正在使用的“版本”