唯一可靠方式是composer show --all vendor/package-name;必须指定完整包名,否则仅显示本地缓存版本,且受packagist源配置、网络及php扩展限制。

查某个包在 Packagist 上发布过哪些版本,唯一可靠的方式是 composer show --all vendor/package-name;用错参数(比如漏掉包名、写成 -all 而非 --all)或没配好源,结果就完全不对。
为什么 composer show --all 必须带包名
不加包名的 composer show --all 是个常见误解——它其实等价于 composer show -a(旧写法),但只列出你本地 vendor/ 目录里「曾经下载过」的版本缓存,不是远程真实发布列表。真正查 Packagist 全量版本,必须指定完整包名,例如:composer show --all monolog/monolog。
容易踩的坑:
-
composer show --all单独执行,输出为空或只有几个老版本,不是命令失效,是你本地没缓存过那些包 -
composer show -all(短横单杠)会被解析为--all的别名,但 Composer 会忽略这个参数,退化成composer show,只列已安装包 - 拼错包名(如写成
monolog/monolg),直接报Package not found,不是网络问题,是 Packagist 上真没这名字
composer show --all 的实际行为和依赖项
这个命令会直连 Packagist API,拉取该包所有未被标记为 abandoned 的版本:包括 v3.5.0、2.10.0-beta1、dev-main、1.27.0-RC1 等。但它受几个现实条件限制:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 依赖
composer.json中配置的repositories,私有包必须先加对应源,且 token 有效 - 国内用户可能因镜像源延迟(如阿里云同步滞后数小时)看到旧列表,临时切回官方源:
composer config -g repo.packagist composer https://packagist.org - 如果 PHP 禁用了
allow_url_fopen或 cURL 不可用,命令会卡住或报错,此时需检查php --ini和扩展加载状态
怎么快速提取纯版本号列表
默认输出是人类可读格式,含描述、时间、类型等冗余字段。脚本中常用方式是转 JSON 后提取:
composer show --all monolog/monolog --format=json | jq -r '.versions | join("\n")'
没装 jq 的环境,可用更稳的管道组合:
composer show --all monolog/monolog | grep '^\s*versions:' | cut -d: -f2 | tr ',' '\n' | sed 's/^[[:space:]]*//'- 注意字段顺序可能随 Composer 版本微调,
versions:行不一定总在第一块,所以别只用head -n1 - 输出里含
dev-main或dev-develop是正常现象,不代表不稳定——它取决于包自身的minimum-stability设置和你的项目配置
查已安装版本 vs 查远程可用版本,别混用
composer show monolog/monolog(不加 --all)只读 vendor/ 和 composer.lock,不联网,反映的是当前项目真实运行态;而 composer show --all 完全不看本地有没有装,只问 Packagist「你发过什么」。这两个命令目的不同,输出不可互换。
最容易被忽略的一点:如果你刚 composer update 过,但 composer show 显示的版本和 composer show --all 里最新版对不上,大概率是 composer.json 里写了 "monolog/monolog": "^3.0" 这类约束,或者 minimum-stability 设成了 stable,导致 dev-main 被自动过滤掉了——不是命令错了,是语义约束在起作用。










