composer show 命令用于查看已安装包详情,需全名如 monolog/monolog;--tree 查依赖树,--all 查远程所有版本,-s 查 autoload 和 scripts,结果依赖 composer.lock 且不扫描 vendor 目录。

查某个包装没装、装的啥版本,就用 composer show vendor/package-name
命令不加参数时只列顶层依赖,根本不是“搜索”,而是“已装清单打印机”——输 composer show monolog/monolog 才能确认它是否在项目里、当前是 v3.5.0 还是 dev-main,连它依赖 psr/log、被 symfony/console require 都一并显示。
- 必须写全名,
monolog或Monolog/Monolog都会报Package not found - 如果包只在
require-dev且你运行过composer install --no-dev,它就不在已安装列表里,composer show查不到 -
versions行显示的是当前 lock 文件记录的安装版本,不是最新版;想看有没有可升级的新版,得用--all
查 autoload 映射和 scripts 钩子,加 -s 参数
类找不到、自定义命令执行失败,八成是 autoload 或 scripts 配置不对。-s(即 --show-config)能把这些关键字段直接展开,比翻 composer.json 或源码快得多。
-
composer show -s monolog/monolog会输出"Monolog": "src/",说明Monolog\Logger对应vendor/monolog/monolog/src/Logger.php - scripts 里定义的
post-install-cmd等钩子也会列出来,方便确认是否被正确注册 - 这个选项在 Composer 2.2+ 才稳定支持;旧版本会提示
unrecognized option,别硬试
理清“为什么装了两个 psr/log”,必须用 --tree
composer show 默认只读 composer.lock 的顶层 packages 字段,跳过所有间接依赖。想还原真实安装结构、排查版本冲突,--tree 是唯一可靠方式。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
composer show --tree laravel/framework输出缩进树,比如:laravel/framework v10.48.12 └── symfony/console v6.4.7 └── psr/log 3.0.0 - 它只展示当前 lock 文件里已解析出的路径;若某包只在
require-dev且用了--no-dev,就不会出现在树中 - 输出太长?直接管道过滤:
composer show --tree | grep "guzzle"
查远程所有可用版本,用 --all,但注意缓存和源配置
composer show --all guzzlehttp/guzzle 会实时请求 Packagist API,返回完整 versions 列表,含 v7.9.0、dev-main、3.0.x-dev 等——但默认只查本地缓存过的版本,容易漏掉刚发布的 tag。
- 必须用双横线
--all,-a是无效别名,会被忽略 - 私有包要查到,得先确保
repositories已配在composer.json里;否则临时加--repository https://your-satis.example.com/packages.json -
--all只显示包名和简短描述,不含版本详情或兼容性说明;确认具体版本信息,仍需指定完整包名再查
最常被忽略的一点:composer show 完全依赖 composer.lock 和本地缓存,不扫描 vendor/ 目录。锁文件损坏、没运行过 composer install,或者终端不在项目根目录下,都可能导致输出为空或错乱。真要确认包是否存在,ls vendor/包名 比什么都准。

















