不能。composer show -a 仅显示已安装包的依赖树,不提供历史版本;composer show --all 仅列出 Packagist 索引的稳定/预发布版本,不含已删、弃用或未同步的 tag;完整 tag 需查源码仓库。

composer show -a 能查到所有历史版本吗
不能。composer show -a 只显示当前 composer.lock 中已安装的包及其依赖树,不提供历史发布记录。它甚至不会列出未安装但可安装的版本。
用 composer show --all 查看包的全部可用版本
composer show --all 是最接近需求的内置命令,但它实际只列出 Packagist 上该包「当前标记为稳定/预发布」的版本(即 dist 或 source 可下载的版本),不包含已删除、被弃用或仅存在于 Git tag 但未同步到 Packagist 的版本。
- 必须指定包名,例如:
composer show --all monolog/monolog - 输出按版本号倒序排列,但不显示发布时间、tag 提交哈希或是否已废弃
- 若提示
Package not found,说明该包未在 Packagist 注册,或名称拼写错误(注意大小写和 vendor 名) - 该命令依赖本地配置的仓库源,默认走
https://packagist.org;如使用私有仓库,需确保composer config repos.xxx已正确设置
想看完整 tag 列表?直接查 Packagist API 或源码仓库
Packagist 不提供「所有历史 tag」的完整列表,它的 API /packages/{vendor}/{package}.json 返回的 versions 字段只含它索引过的版本。真正全量的发布记录,得去上游 Git 仓库看:
- 先用
composer show -i {package}查源码地址(看source字段) - 再访问对应 GitHub/GitLab 页面,点
Tags页签,或执行:git ls-remote --tags https://github.com/{vendor}/{repo}.git - 注意:有些项目用
git archive或dist方式发布,其 tag 可能比 Packagist 多(比如 CI 自动打的v1.2.3+commitabc) - 部分包启用了 Packagist 的
auto-updates,但若作者手动删了旧 tag,Packagist 不会自动清理缓存,此时 API 和网页显示可能滞后
为什么 packagist.org 网页版不显示全部版本
Packagist 主要服务 Composer 安装逻辑,不是版本归档平台。它只索引满足以下条件的版本:
- Git tag 符合语义化版本格式(如
v1.2.3、1.2.3,不包括release-1.2) - 对应 commit 存在
composer.json且name字段匹配 - 未被作者在 Packagist 后台手动隐藏(
abandoned或private设置) - 没有触发自动过滤规则(如含
dev-前缀的 tag 默认不索引)
所以看到的「版本列表」本质是「Composer 能 install 的候选集」,不是 Git 全量 tag 快照。










