Composer如何查看可用版本_Composer查看远程包版本列表【常用】

1次阅读

composer show -a vendor/package-name 可查看包所有已发布版本(含稳定版、RC、beta、dev分支等),需指定完整包名,支持 -p 参数输出纯版本号列表,结果依赖 Packagist API 且受本地缓存影响。

Composer如何查看可用版本_Composer查看远程包版本列表【常用】

composer show -a 查看包所有可用版本

直接运行 composer show -a vendor/package-name 是最常用、最可靠的方式,它会从 Packagist 或你配置的仓库拉取该包全部已发布版本(包括稳定版、RC、beta、dev 分支等),不需要先 require 到项目中。

注意:必须指定完整包名,比如 monolog/monolog,不能只写 monolog;如果包名拼错或网络不通,会报 Package not found 错误。

  • -p 参数可只显示版本号列表(适合脚本解析)
  • 若本地已安装该包,composer show vendor/package-name(不带 -a)只显示当前安装版本和依赖信息,不是远程全量列表
  • 国内用户遇到超时,可临时切镜像源:composer config -g repo.packagist composer https://packagist.phpcomposer.com(注意该镜像已停用,推荐用 https://packagist.org 官方源 + 代理或阿里云镜像)

composer search 命令不返回版本信息

composer search 只用于模糊匹配包名或描述,结果里不含任何版本字段。例如 composer search monolog 会列出 monolog/monologlaravel/monolog 等,但每个条目只有名字和简短描述,没有 v1.25.0、v2.9.0 这类信息。

别指望靠它查版本——这是常见误解。想确认某包是否存在、是否拼对了,它有用;想选版本,必须切到 show -a

查看特定分支或开发版本(如 dev-main)

有些包主干用 dev-maindev-develop 作为默认开发分支,composer show -a 默认会列出这些,但它们可能被标记为 dev 类型且无明确语义化版本号。

  • 如果 show -a 输出里看到 dev-main,说明该包启用了 gitHub/gitlab 自动映射,Composer 能识别其 commit hash 和更新时间
  • 想强制安装最新 dev 版,需在 require 中显式写 "vendor/package": "dev-main",不能只写 "*" 或留空
  • 某些私有 Git 仓库未配置 distsource 信息时,show -a 可能漏掉分支,此时需检查 composer.json 中仓库 type 是否为 vcs,URL 是否可访问

为什么 packagist.org 网页搜不到某些版本?

Packagist 网站前端默认只展示稳定版本(stable),且会隐藏已废弃(abandoned)或超过 2 年未更新的包。而 composer show -a 走的是 API 接口,返回原始元数据,包含所有 tagged release 和分支快照。

例如 phpunit/phpunit9.6.x-dev 在网页上可能不显示,但 composer show -a phpunit/phpunit 会列出;同理,某些包打过 v1.0.0-RC1 tag,网页过滤后不可见,命令行仍可见。

真正容易被忽略的是:Composer 缓存可能导致 show -a 返回旧列表。遇到版本“突然消失”或“多出奇怪分支”,先运行 composer clear-cache 再试。

text=ZqhQzanResources