composer show -a vendor/package-name 可查看包所有已发布版本(含稳定版、RC、beta、dev分支等),需指定完整包名,支持 -p 参数输出纯版本号列表,结果依赖 Packagist API 且受本地缓存影响。

composer show -a 查看包所有可用版本
直接运行 composer show -a vendor/package-name 是最常用、最可靠的方式,它会从 Packagist 或你配置的仓库拉取该包全部已发布版本(包括稳定版、RC、beta、dev 分支等),不需要先 require 到项目中。
注意:必须指定完整包名,比如 monolog/monolog,不能只写 monolog;如果包名拼错或网络不通,会报 Package not found 错误。
- 加
-p参数可只显示版本号列表(适合脚本解析) - 若本地已安装该包,
composer show vendor/package-name(不带-a)只显示当前安装版本和依赖信息,不是远程全量列表 - 国内用户遇到超时,可临时切镜像源:
composer config -g repo.packagist composer https://packagist.phpcomposer.com(注意该镜像已停用,推荐用https://packagist.org官方源 + 代理或阿里云镜像)
composer search 命令不返回版本信息
composer search 只用于模糊匹配包名或描述,结果里不含任何版本字段。例如 composer search monolog 会列出 monolog/monolog、laravel/monolog 等,但每个条目只有名字和简短描述,没有 v1.25.0、v2.9.0 这类信息。
别指望靠它查版本——这是常见误解。想确认某包是否存在、是否拼对了,它有用;想选版本,必须切到 show -a。
查看特定分支或开发版本(如 dev-main)
有些包主干用 dev-main 或 dev-develop 作为默认开发分支,composer show -a 默认会列出这些,但它们可能被标记为 dev 类型且无明确语义化版本号。
- 如果
show -a输出里看到dev-main,说明该包启用了 gitHub/gitlab 自动映射,Composer 能识别其 commit hash 和更新时间 - 想强制安装最新 dev 版,需在
require中显式写"vendor/package": "dev-main",不能只写"*"或留空 - 某些私有 Git 仓库未配置
dist或source信息时,show -a可能漏掉分支,此时需检查composer.json中仓库 type 是否为vcs,URL 是否可访问
为什么 packagist.org 网页搜不到某些版本?
Packagist 网站前端默认只展示稳定版本(stable),且会隐藏已废弃(abandoned)或超过 2 年未更新的包。而 composer show -a 走的是 API 接口,返回原始元数据,包含所有 tagged release 和分支快照。
例如 phpunit/phpunit 的 9.6.x-dev 在网页上可能不显示,但 composer show -a phpunit/phpunit 会列出;同理,某些包打过 v1.0.0-RC1 tag,网页过滤后不可见,命令行仍可见。
真正容易被忽略的是:Composer 缓存可能导致 show -a 返回旧列表。遇到版本“突然消失”或“多出奇怪分支”,先运行 composer clear-cache 再试。