composer怎么查看版本_composer版本查询命令说明

3次阅读

composer版本号以composer –version输出的语义化版本(如2.7.7)为准,括号内时间为官方phar构建utc时间;查远程所有可用版本须用composer show -a vendor/package,而非-all。

composer怎么查看版本_composer版本查询命令说明

查当前 Composer 版本:用 composer --version,但别信时间戳是“你装的时间”

执行 composer --version 输出类似 Composer version 2.7.7 (2024-06-12 13:45:00),其中 2.7.7 是真实语义化版本号,而括号里那个时间不是你本地安装或升级的时间,是官方 PHAR 包构建时的 UTC 时间戳。如果你自己从源码 git clone && php install.php 构建,会看到 dev-main 这类标识,且无精确时间——这说明你用的不是标准发布版。

  • 想确认是否为官方稳定包?看有没有带完整日期的时间戳;有,大概率是官网下载的 PHAR
  • 在 CI/CD 或容器里看到 dev-main,别慌,只是构建方式不同,功能一致,但自动更新、签名验证等行为可能受限
  • 某些老旧系统(如 centos 7 默认 PHP 5.4)跑新版 Composer 会报错,此时 --version 可能根本执行不了——先用 php -v 看 PHP 版本是否达标(Composer 2.x 要求 PHP ≥7.2)

查某个包的所有可用版本:必须用 composer show -a vendor/package-name

composer show -a 是唯一能可靠拉取 Packagist 全量远程版本列表的命令,包括 3.5.02.10.0dev-main1.2.3-RC1 等所有 tagged release 和分支快照。它不依赖本地是否已安装该包,也不看你 composer.json 里有没有写它。

  • 拼错包名?会直接报 Package not found,不是命令失效,而是 Packagist 上真没这个命名空间
  • 私有包查不到?检查 composer.json 是否配置了正确的 repositories,且 Token 有效;镜像源(如阿里云)可能延迟数小时,临时切回官方源:composer config -g repo.packagist composer https://packagist.org
  • 输出太长想只看版本号?加 --format=json 配合 jq 最干净:composer show -a monolog/monolog --format=json | jq -r '.versions | join("n")';没 jq 就用 grep "versions" -A 1 + cut 粗筛,但注意字段顺序可能随 Composer 版本微调

查已安装包的当前版本:直接 composer show vendor/package-name,不加 -a

这个命令只读 vendor/composer.lock,不联网,所以快、稳、反映真实运行态。但它只显示「当前项目实际用了哪个版本」,不会告诉你还有哪些新版本可选。

  • 想确认某包是不是被间接升级过?对比 composer show foo/bargit diff composer.lock 中对应区块
  • 发现版本和预期不符?可能是 minimum-stability 设置影响了安装结果(比如设成 stable 就不会装 dev-main),或者有 conflict 规则压制了高版本
  • 只想看项目里所有直接依赖的版本?用 composer show --direct,比扫完整依赖树更聚焦

为什么 composer show -all 单独执行没用?它根本不查远程

composer show -all(注意是 -all 不是 -a)是个容易误解的命令:它不接受包名参数,也不访问 Packagist API,只是把当前 vendor/ 下每个已安装包的缓存版本全列出来——比如你曾用 composer update --with-all-dependencies 拉过旧版,它就可能出现在这里,哪怕那版早已下线。

  • 它列出的版本 ≠ 当前可安装版本,更 ≠ Packagist 上最新版
  • 你只装过 v2.9.0,即使 v2.10.0 已发布三天,show -all 也不会显示它
  • 真正需要做版本调研时,别贪快跳过 -a 参数;网络慢或失败时,直接打开 https://packagist.org/packages/vendor/package-name 更直观

最常被忽略的一点:版本列表是否完整,取决于你当前配置的仓库源和网络可达性。本地能跑通 composer show -a,不代表 CI 环境也能——尤其当使用私有 gitlab 仓库又没配好 ssh key 或 token 时,错误往往静默表现为“查不到任何版本”,而不是明确报错。

text=ZqhQzanResources