composer怎么查看某包的所有版本_composer show包版本列表

2次阅读

composer show -a 可查包的全部可用版本(含预发布),但需手动用 grep 过滤 stable 版本;网页版与 cli 结果差异源于缓存、废弃标记及稳定性配置。

composer怎么查看某包的所有版本_composer show包版本列表

composer show 查不到包的全部历史版本?

默认 composer show 只显示当前已安装版本或最新稳定版,不列出所有可用版本。想看某包从 v1.0.0v3.2.1 的完整发布记录,得换命令。

用 composer show -a 查所有可用版本(含预发布)

composer show -a 是最直接的方式,它会向 Packagist API 发起请求,拉取该包在所有稳定性标签(stablebetaalphadev)下的全部 tagged 版本。注意:不是所有版本都保证能装,尤其 dev- 前缀的分支名不算正式版本。

  • 执行 composer show -a vendor/package-name(比如 composer show -a monolog/monolog
  • 输出里每行是一个 version 字段值,如 2.9.03.0.0-RC1dev-main
  • 如果报错 Package not found,说明包名拼错,或该包未在 Packagist 公开注册
  • 国内用户可能遇到超时,可临时加 -vvv 看请求细节,或配镜像源(如阿里云 https://mirrors.aliyun.com/composer/

想过滤只看 stable 版本?手动 grep 更可靠

composer show -a 输出混着 alpha/beta/dev,但很多项目只要求 stable。没有内置参数过滤,得靠 shell 工具筛:

composer show -a monolog/monolog | grep -E '^[0-9]+.[0-9]+.[0-9]+$'

这个正则能匹配形如 2.10.01.27.1 的语义化 stable 版本号,跳过 3.0.0-beta1dev-master。注意:有些包用 v2.0.0 格式打 tag,就得改成 ^v[0-9]+.

为什么 packagist.org 网页版和 CLI 结果有时不一致?

网页上看到的“Latest version”是 Packagist 缓存+算法计算的结果(比如优先推 stable 且非废弃的),而 composer show -a 是实时查 API 的 raw tags 列表。常见差异点:

  • 包作者删了某个 tag,Packagist 需要几小时同步,CLI 可能还列着,网页已隐藏
  • 某些版本被标记为 abandoned(如 phpunit/phpunit:4.8),网页会显灰,但 show -a 仍返回
  • 本地有 composer.json 锁定了 "minimum-stability": "dev"show -a 就会多出一 dev- 分支

真正要确认某个版本能否装,别光看列表,直接试 composer require vendor/package:2.5.0 —— Composer 会自己校验依赖兼容性和版本有效性。

text=ZqhQzanResources