Composer show -a命令详解 查看所有可用包版本【工具】

7次阅读

composer show –all 列出指定包在 Packagist 上所有未被废弃的稳定及预发布版本,如 composer show monolog/monolog –all;不加 –all 仅显示本地 lock 文件中锁定的版本。

Composer show -a命令详解 查看所有可用包版本【工具】

composer show -a 显示的是什么

composer show -a 并不是 Composer 官方支持的命令,运行它会直接报错:Command "show -a" is not defined.。Composer 的 show 命令不接受 -a(all)这个短选项——这是常见误解,可能源于把 npm list -g --depth=0pip list --outdated 的习惯套用过来了。

想看某个包所有可用版本,该用哪个命令

正确方式是使用 composer show 加上包名和 -a 的**等效替代参数**:--all(注意是双横线)。这个参数会让 Composer 查询 Packagist 并列出该包**所有已发布、未被废弃的稳定/预发布版本**。

  • composer show monolog/monolog --all:列出 monolog 所有版本(含 1.x、2.x、3.x)
  • 不加 --all 时,默认只显示当前 lock 文件中锁定的版本及其直接依赖
  • 若包未在 composer.json 中声明,--all 仍能查到——它走的是远程 API,不依赖本地安装
  • 响应较慢是正常现象,因需实时请求 packagist.org;可加 -vvv 看底层 http 请求

为什么有时 –all 没反应或报错

常见原因不是命令写错,而是环境或网络问题

  • 没配置 Packagist 镜像(如国内用户未设 https://packagist.phpcomposer.com阿里云镜像),请求超时静默失败
  • Composer 版本太老(–all 支持不稳定,建议升级到 composer self-update
  • 包名拼错或大小写不符(如 guzzlehttp/guzzle 写成 GuzzleHttp/Guzzle),返回空结果但不报错
  • 遇到 [ErrorException] proc_open(): fork failed:通常是系统资源不足(如 docker 容器内存太小),非命令本身问题

替代方案:不依赖网络查本地缓存版本

如果只想快速确认某包有哪些版本曾被安装过(比如调试历史兼容性),可以绕过网络:

  • ls vendor/包名(仅限已安装且未删 vendor 的情况)
  • composer show --installed | grep 包名:只显示当前项目已安装的版本
  • 更彻底的办法是直接查 Packagist API:curl -s "https://packagist.org/packages/monolog/monolog.json" | jq '.package.versions | keys[]'(需装 jq

真正需要“所有可用版本”时,--all 是唯一官方路径,但得接受它本质是网络调用——不是本地索引查询,也不是版本范围解析器。

text=ZqhQzanResources