composer show 查本地已安装包及版本,按字母序排列;加包名可查详情,加 -a 查 Packagist 所有可用版本,加 --remote 查远程包摘要信息。

直接查当前项目已安装的包和版本
运行 composer show 就能立刻看到所有已安装包及其当前版本,按包名字母序排列,格式是 vendor/name → version。它只显示真正装进 vendor/ 里的包,跳过 composer.json 里写了但还没 install 或 update 的依赖。
- 不加任何参数最安全,适合日常确认环境状态
- 如果只想看某一个包,比如
monolog/monolog,直接加包名:composer show monolog/monolog,会显示它的描述、作者、require 列表、autoload 配置等 - 注意:这个命令默认不联网,读的是本地
vendor/composer/installed.json,所以结果一定准确,但不会包含 Packagist 上刚发布还没拉下来的版本
查某个包在 Packagist 上所有可用版本(含 alpha/beta/dev)
用 composer show -a vendor/package-name,比如 composer show -a guzzlehttp/guzzle。这个命令会绕过本地缓存,直连 Packagist API 拉取全部 tagged 版本和分支别名(如 dev-main、2.x-dev)。
-
-a是--all的简写,不是--all-versions或其他变体,拼错就无效 - 首次执行可能稍慢,且需要网络通畅;若公司网络屏蔽 Packagist,会卡住或报 cURL 错误
- 输出里 “versions” 字段那一行才是关键,但混着其他元信息——想纯提版本号,推荐加
--format=json | jq -r '.versions | join("\n")',没jq就用grep "versions" | cut -d: -f2 | tr ',' '\n'粗筛
查远程包信息(哪怕没装过)
用 composer show --remote vendor/package-name,比如 composer show --remote laravel/framework。它不依赖本地 vendor,只查 Packagist 上该包最新稳定版的摘要信息(描述、作者、require 等),但不会列出所有历史版本。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 适合快速评估一个新包值不值得引入,不用先
require再删 - 和
-a不同,--remote不保证返回全部版本,它只取“默认分支”或“latest stable”的快照 - 如果同时加
--remote和-a,比如composer show --remote -a vendor/package,效果等同于只用-a——--remote在这里冗余
常见错误:为什么 composer show xxx 没显示新版本?
因为默认行为不刷新远程数据,只读本地缓存。你昨天发布的 v2.1.0,今天跑 composer show xxx 很可能还只看到 v2.0.0。
- 误以为
composer update后就能看到新版本列表?错。update 只影响已声明的依赖,不影响show的源数据 - 误用
--all拼写成--all-versions或-all,命令静默失败,输出还是旧结果 - 在 CI 环境或离线机器上执行
-a,会超时或报错,此时应改用composer show vendor/package看已安装版本,或提前用 Packagist 网页查好再写死版本号
版本探查这事,核心就两条:查本地装了啥,用 composer show;查远端有啥可选,必须带 -a。少一个横杠,结果就可能差好几周。










