不能。composer show 默认只显示已安装版本或最新稳定版,不列出所有历史版本;必须用 composer show -a vendor/package-name 才能从 Packagist API 获取全部可用版本(含 stable、alpha、beta、rc、dev 等)。

composer show 能不能直接列出所有历史版本?
不能。composer show 默认只显示已安装版本(或最新稳定版),不返回历史版本列表。它查的是当前 composer.lock 或 Packagist 元数据缓存,不是完整版本日志。
用 composer show -a 查看包的全部可用版本
composer show -a 是最直接有效的方式,它会从 Packagist API 拉取该包所有已发布、未废弃的版本(包括 alpha/beta/rc/stable)。
- 执行
composer show -a monolog/monolog即可看到从1.0.0到最新3.x的全部版本号 - 输出按语义化版本升序排列,但不会标注发布时间或是否废弃 —— 需人工识别
dev-、RC、beta等前缀 - 如果提示
Package not found,说明包名拼写错误,或该包未在 Packagist 注册(比如私有仓库需先配置 repo) - 响应依赖网络和本地缓存;加
-vvv可看实际请求的 API 地址(通常是https://packagist.org/p/monolog/monolog.json)
想筛选特定类型版本(如只看 stable)怎么办?
composer show -a 不支持内置过滤,得靠外部工具处理。常见做法是管道配合 grep 或 awk:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 只保留稳定版:
composer show -a monolog/monolog | grep -E '^[0-9]+\.[0-9]+\.[0-9]+$' - 排除预发布版:
composer show -a monolog/monolog | grep -v -E '^(dev|alpha|beta|rc|preview)' - 注意:Packagist 的版本命名规则并不强制,有些包用
2.0.0-BETA1,有些用2.0.0-beta1,正则得兼顾大小写和分隔符 - Windows 用户若用 PowerShell,
findstr替代grep,但正则支持较弱,建议改用 WSL 或 Git Bash
为什么 packagist.org/api/search 不适合查版本列表?
这个 API 只返回包的基本信息(name、description、downloads),不包含版本数组。真正返回全量版本的是每个包专属的 /p/{vendor}/{package}.json 接口 —— 但手动构造请求、解析 JSON、处理分页和重定向太重,远不如 composer show -a 稳定可靠。
真正容易被忽略的是:Composer 会缓存 Packagist 响应(默认 5 分钟),刚发布的版本可能查不到。遇到这种情况,加 --no-cache 强制刷新:composer show -a --no-cache monolog/monolog。

















