composer show 默认只输出包名和版本号,需加 -s 查 autoload/scripts、--tree 查依赖树、--all 查远程所有版本,且严格依赖 composer.lock 完整性与项目根目录执行。

直接用 composer show 查不到完整信息,不是命令坏了,是默认行为只输出一行版本号——想看 autoload 映射、依赖列表、scripts 钩子,必须加参数。
查已安装包的 autoload 和 scripts 配置
类找不到、自定义命令不执行,八成是 autoload 或 scripts 没生效。composer show 不加参数时完全不显示这些字段,哪怕你装了 monolog/monolog,也只会输出 monolog/monolog 3.5.0。
- 必须加
-s(即--show-config)才能展开关键配置:composer show -s monolog/monolog会显示"Monolog\": "src/"这类 PSR-4 映射,以及post-install-cmd等钩子 -
-s在 Composer 2.2+ 才稳定支持;旧版本会报unrecognized option,别硬试 - 包名必须带 vendor 前缀且大小写严格匹配:
monolog/monolog✅,Monolog/Monolog❌,monolog❌ - 如果包只在
require-dev里,且你运行过composer install --no-dev,它就不在show结果中
查依赖树:为什么装了两个 psr/log
composer show laravel/framework 默认只显示顶层信息,根本看不出它拉了哪个 symfony/console、后者又带了哪个 psr/log 版本。真实冲突路径只能靠 --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,输出是缩进结构,例如:└── psr/log 3.0.0,层级关系一目了然 - 它只反映当前
composer.lock已解析出的实际路径;被conflict排除的候选版本、或require-dev中未启用的包,不会出现 - 想过滤长输出?用管道加
grep:composer show --tree | grep "guzzle",注意保留前导空格,否则缩进结构丢失 -
--tree不支持通配符:composer show --tree "laravel/*"会直接报错
查远程所有可用版本(含 dev-main、LTS、RC)
本地已装的是 v7.9.0,但你想确认 v8.0 是否已发布、是否支持 PHP 8.3?composer show guzzlehttp/guzzle 默认只返回本地缓存过的版本,可能漏掉刚打的 tag。
- 必须用双横线
--all强制走 Packagist API:composer show --all guzzlehttp/guzzle -
-a是旧版别名,在 Composer 2.2+ 中已被弃用,加了也无效,且不报错不提示——结果还是旧缓存 - 私有包要查到,得先确保
repositories已配在composer.json里;否则临时加--repository https://your-satis.example.com/packages.json -
--remote只返回 Packagist 上标记为latest的那个版本详情,不是全部;不能和--all同时用
全局包怎么查、PATH 为什么总配不对
composer global show 不依赖当前目录,但它查的是全局配置,不是项目 vendor。很多人输完没输出,其实是根本没装过全局包,或者 PATH 指向了错误的 bin 目录。
- 先确认是否真装过:
composer global require laravel/installer,再跑composer global show - 全局命令实际在
[home]/vendor/bin,不是[home]/bin——Linux/macOS 是$HOME/.composer/vendor/bin,Windows 是%APPDATA%ComposerVendorin(注意Vendorin大小写) - 验证 PATH 是否生效:
which php-cs-fixer(Linux/macOS)或where php-cs-fixer(Windows) -
composer global show --name-only适合脚本解析;--direct只显示你亲手global require的包,排除自动拉进来的依赖
最容易被忽略的是:所有 show 命令都强依赖 composer.lock 的完整性,且默认不扫描 vendor/ 目录——如果你删过 lock 文件或手动改过 vendor,结果可能和实际不符。调试 autoload 失败时,优先跑 composer dump-autoload -o 再试 show -s。










