跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

composer怎么查看某个依赖包的所有历史版本_show -a命令详解【方法】

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

相关文章