Composer 没有 composer show -a 命令,该写法会报错;查包所有历史版本应调用 Packagist API:curl -s "https://packagist.org/packages/vendor/package.json" | jq '.package.versions | keys[]'。
Composer 没有内置的
命令,该写法会直接报错:
。想查某个包的所有历史版本,得用其他组合方式。
用
查包基本信息和最新稳定版
这是最常用入口,但默认只显示当前锁定义或最新可安装版本,不列全部历史:
:显示包描述、最新稳定版(如
)、依赖关系
:列出所有已知包名(不含版本)
它不展示历史 tag 或旧版本列表,
参数根本不存在,别被过时文档误导
真正能查全量历史版本的方法:调用 Packagist API
Packagist 是 Composer 默认仓库,所有公开包的版本数据都从这里来。直接请求其 JSON 接口最可靠:
把
替成真实包名,比如
需要
解析 JSON;若没装,可用 Python 快速提取:
返回的是所有带版本号的键(如
、
、
),含不稳定分支和旧版
用
和
辅助验证版本是否存在
某些旧版可能因约束被过滤,需手动试探:
php版微信js-sdk支付接口类
php版微信js-sdk支付接口类
下载
:确认包存在且名字拼写正确
:加
不实际安装,只检查该版本能否解析(返回成功说明可用)
注意语义化版本写法差异:
、
、
在不同上下文行为不同;Packagist API 返回的 key 是原始 tag 名,未必都能直接
为什么不能依赖本地
查历史版本
只记录当前项目已安装的精确版本(
锁死),不是版本数据库:
删掉 lock 文件后重 install,只会按
的约束拉取满足条件的最新版
历史版本信息不在本地缓存里;Composer 本身不维护“本地版本索引”
想追溯某次提交用过的版本?只能翻 Git 历史里的
Packagist API 是唯一权威来源,其他方式都是间接试探。别试
,它不存在;也别指望
列出所有旧版——它只对比当前
约束下的可升级项。
composer show -aCommand "show -a" is not definedcomposer showcomposer show vendor/packagev3.2.1composer show -p-acurl -s "https://packagist.org/packages/vendor/package.json" | jq '.package.versions | keys[]'vendor/packagemonolog/monologjqpython3 -c "import json,sys;print('\n'.join(json.load(sys.stdin)['package']['versions'].keys()))""dev-main""v2.10.0""1.25.0"composer searchcomposer requirecomposer search vendor/packagecomposer require vendor/package:v1.2.3 --dry-run--dry-runv2.0.02.0.0^2.0requirecomposer.lockcomposer.lockcontent-hashcomposer.jsoncomposer.lockshow -acomposer outdatedrequire