composer show 列出当前项目所有已安装包,默认仅显示顶层 require 的包及其版本和描述;加 -a 查看全部依赖(含 dev 和传递依赖),跟包名可查指定包详情,支持管道或重定向;注意勿与 composer list 混淆。

composer show 列出所有已安装包
直接运行 composer show 就能看到当前项目中所有已安装的依赖包,包括它们的版本号和简短描述。它默认只显示顶层 require 的包(即你手动执行 composer require 加进去的),不展开 require-dev 或传递依赖。
常见错误现象:执行后输出为空或提示 “No composer.json found”——说明不在项目根目录下,或者项目没初始化过 composer.json。
- 想看全部依赖(含 dev 和传递依赖)?加
-a参数:composer show -a - 只想查某个包的具体信息?后面跟包名:
composer show monolog/monolog - 输出太长不方便浏览?可以管道进
less或重定向到文件:composer show -a | less
composer list --format=json 不是查看依赖的正确方式
composer list 是列出所有可用命令的,不是查包用的。加 --format=json 只会让命令列表以 JSON 输出,跟依赖毫无关系——这是新手常搜错关键词导致的误操作。
真正需要结构化数据时,应该用:composer show --format=json,但它返回的是每个包的元信息(比如 name、version、type、require 等),不是扁平列表,解析成本略高。
-
composer show默认文本格式,人眼友好;--format=json适合脚本调用 - 注意:JSON 输出里
require字段是该包自己的依赖,不是你项目的依赖树 - 别把
composer list和composer show混了,名字像但用途完全不同
composer outdated 查哪些包能升级
如果目标是“检查哪些依赖有新版可更新”,composer outdated 比 show 更精准。它会比对 packagist 上的最新稳定版,标出当前安装版本是否落后。
默认只显示有更新的包,安静模式下不输出任何东西——这点容易让人误以为没反应,其实是“全都是最新版”的意思。
- 想看所有包(包括已是最新版的)?加
--all:composer outdated --all - 只关心安全更新?加
--security-only(需 Composer 2.2+) - 输出列太多看不清?加
--direct只显示你require的包,忽略传递依赖
vendor/composer/installed.json 是真实安装快照
这个文件是 Composer 安装完成后生成的“事实数据库”,记录了每个包的确切版本、安装路径、autoload 配置等。它比 composer show 更底层,也更权威——比如你手工改过 vendor/ 里的某包,show 可能还缓存旧信息,但这里始终是磁盘上实际状态。
不过它是 PHP 数组格式(非标准 JSON),不能直接用 cat + jq 解析;读取它通常是为了写自定义工具或调试 autoload 行为。
- 不要手动编辑这个文件,Composer 不会识别你的修改
- 如果发现
composer show和里面内容不一致,先运行composer install或composer update --lock同步 - CI/CD 中做版本审计时,它比命令行输出更可靠,但要注意权限和路径是否可达
composer show 足够;真要写自动化脚本或排查 autoload 异常,才需要碰 vendor/composer/installed.json。这两者之间差了一层抽象,跨过去前得想清楚你要的到底是“声明”还是“事实”。










