直接运行 composer show 仅列出顶层依赖,查全部已安装包(含传递依赖)必须用 composer show --tree;查 autoload/scripts 需加 -s;查远程所有版本须用 --all。

直接运行 composer show 就能列出当前项目所有已安装的顶层依赖包(即 composer.json 中 require 和 require-dev 里显式声明、且实际装进了 vendor/ 的包),但它**不显示传递依赖**,也不展开 autoload 或依赖树——这些都得靠参数触发。
查全部已安装包(含传递依赖):必须加 --tree
默认 composer show 只列你手动 require 过的包,像 psr/http-message、symfony/polyfill-* 这类被拉进来的子依赖根本不会出现。想看到真实安装结构,只能用 --tree:
-
composer show --tree从根项目出发,递归展开每一层依赖,缩进表示层级关系 - 输出里出现两次
psr/log?说明不同路径引入了不同版本,冲突根源就在这里 - 如果某包只在
require-dev里,又用了--no-dev安装,它就不会出现在树中 - 输出太长时别硬翻:
composer show --tree | grep "guzzle",注意保留前导空格,否则缩进丢失,层级看不清
查某个包的 autoload 映射和 scripts:必须加 -s
类找不到、自定义命令不执行,八成是 autoload 或 scripts 配置没生效。-s(即 --show-config)是唯一能直接看到这两块元数据的方式:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(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/",说明Monolog\Logger对应vendor/monolog/monolog/src/Logger.php - 同时列出
scripts字段注册的钩子,比如post-install-cmd是否包含phpunit - 这个选项在 Composer 2.2+ 才稳定支持;旧版本会报
unrecognized option,别试 - 不加
-s时,默认只输出一行:monolog/monolog 3.5.0,容易误判为“查不到详情”
查远程所有可用版本(含未安装的):必须用 --all,不是 -a
想确认有没有新版本可升、某个旧版是否还被支持,不能只跑 composer show guzzlehttp/guzzle——它默认只返回本地缓存过的版本,可能漏掉刚发布的 tag:
- 必须用双横线
--all:composer show --all guzzlehttp/guzzle才会直连 Packagist API,返回完整版本列表(含v8.0.0、dev-main、3.0.x-dev) -
-a是无效别名,会被忽略,不报错也不提示,结果还是旧缓存 - 私有包要查到,得先确保
repositories已配在composer.json里;否则临时加--repository https://your-satis.example.com/packages.json -
--all输出只含包名和简短描述,不含兼容性说明;确认具体版本约束,仍需指定完整包名 + 版本号再查
最容易被忽略的是:所有 composer show 命令都强依赖 composer.lock 的完整性与 vendor/ 的真实状态。如果手动删过 vendor/ 但没重装,或只更新了 lock 文件而没运行 install,show 的输出就会和预期不符——它反映的永远是 vendor/ 里实际存在的东西,不是你“以为”该有的东西。

















