composer show 默认只输出一行 vendor/package version,查 autoload、scripts、依赖树、远程版本等必须加对应参数(如-s、--tree、--all),否则信息不全;它依赖 composer.lock 完整性且须在项目根目录执行。

直接说结论: composer show 不是“查有没有装”,而是“查装得对不对、配得全不全”——它默认只输出一行 vendor/package version,真要查 autoload、scripts、依赖树、远程版本,必须加对应参数,否则等于没查。
查某个包是否已安装,但只看到一行结果?加 --installed 或确认执行位置
运行 composer show monolog/monolog 却只返回 monolog/monolog 3.5.0,不是它没装,是你没触发详细模式。这个单行输出是默认行为,不代表信息完整。
- 确保在项目根目录(含
composer.json和composer.lock)下执行,否则会静默失败或返回空 -
--installed是默认选项,不加也行;但若想明确过滤,可显式写composer show --installed monolog/monolog - 如果返回 “Package not found”,先检查拼写(
monolog/monolog不是monolog-monolog),再确认composer install是否成功执行过 - 私有包未配置
--repository时,即使存在也不会被识别
想看 autoload 映射或自定义 scripts?必须加 -s(--show-config)
默认输出完全不展示自动加载规则和钩子脚本,调试类找不到、post-install-cmd 不生效时,漏掉 -s 就等于蒙眼排错。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
composer show -s monolog/monolog才会显示"Monolog\": "src/"这类 autoload 配置,以及scripts字段里的命令 - 该选项从 Composer 2.2+ 开始稳定支持;旧版本会报
unrecognized option,别硬试 -
-s只对已安装包有效;查远程包时加了也无用
为什么装了 laravel/framework 却发现两个 psr/log?用 --tree 看真实依赖路径
composer show laravel/framework 只告诉你顶层信息,冲突根源藏在嵌套依赖里。不展开树,根本不知道哪个包悄悄带进了旧版 psr/log。
-
composer show --tree laravel/framework输出缩进结构,例如:└── psr/log 3.0.0,层级关系一目了然 - 该树基于当前
composer.lock解析,如果某包只在require-dev且你上次用了--no-dev,它就不会出现在树中 - 输出太长时别手动翻,直接管道过滤:
composer show --tree | grep "guzzle"
查远程最新版或验证私有包元数据?--all 必须写全,-a 是无效别名
想确认 guzzlehttp/guzzle 有没有 v8.0 正式版、是否支持 PHP 8.3,光跑 composer show guzzlehttp/guzzle 没用——它只读本地缓存,可能滞后数小时甚至数天。
- 强制走 Packagist API:用
composer show --all guzzlehttp/guzzle,返回全部版本(含v7.9.0、8.0.0-rc1、dev-main)及发布时间、稳定性标记 -
-a是常见误写,Composer 会忽略它,不报错也不提示,结果还是旧缓存 - 查私有包需额外指定
--repository,且 URL 必须指向合法的packages.json(不是 Git 地址),否则报Could not parse version constraint
最常被忽略的一点:所有 composer show 的深度信息(autoload、tree、remote metadata)都强依赖 composer.lock 的完整性。lock 文件损坏、被手动编辑、或与 composer.json 不同步时,--tree 和 --all 的结果就不可信——别急着改代码,先 composer install 或 composer update --lock 同步一次。

















