查“它依赖谁”用composer show package/name,查“谁依赖它”优先用composer show --who package/name;composer depends多数场景不可靠,因只扫项目composer.json显式声明,不读vendor包json,且对provide/replace/path、大小写敏感,版本低于2.5未定义。

直接结论:查特定包“它依赖谁”,用 composer show package/name;查“谁依赖它”,优先用 composer show --who package/name,composer depends 在多数场景下不可靠、易漏判。
composer show package/name 查一级依赖最准
这个命令只读取目标包自身的 composer.json,输出它的 require 和 require-dev 字段内容,不递归、不猜测、不依赖当前项目状态。
- 必须已安装该包,否则报
Could not find package—— 先确认ls vendor/package/name存在 - 输出中的版本号是约束(如
^2.0),不是实际安装版本;要看真实装了哪个,得配合composer show --tree package/name - 不区分 dev 或 prod 环境,结果恒定;但若包只在
require-dev里且没启用 dev 模式,composer install --no-dev后它就不存在,自然查不到
composer show --who package/name 是反查上游的稳解
它遍历所有已安装包的 require 字段,直接回答“谁在自己的 composer.json 里写了这行”,不绕弯、不跳过 provide/replace、不依赖 Composer 版本特性。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 加
--no-dev可排除开发工具链干扰:composer show --who --no-dev psr/log - 结果为空 ≠ 没人用 —— 可能是通过
provide虚拟提供(比如monolog/monolog提供psr/log-implementation),此时需手动查composer show -t . | grep -B2 -A2 "psr/log" - 它只显示一级上游(如
monolog/monolog),不会继续往上翻到你的根项目;真要溯源到自己写的require,得接composer why --tree
composer depends 命令为什么经常失效
它只扫描你项目根目录 composer.json 中显式声明的 require 和 require-dev,完全不读 vendor/ 里任何已安装包的依赖声明。
- 包名必须严格小写、带斜杠、不能缩写 ——
monolog≠monolog/monolog - 如果目标包是被
laravel/framework带进来的,而你没在自己的composer.json里写它,depends就永远返回空 - 遇到
replace、provide或本地path仓库时,大概率静默跳过,不报错也不提示 - Composer 版本低于 2.5 时,
depends命令默认不存在;升级后仍为空,大概率是包根本没被显式 require
镜像配置不影响依赖关系查询
无论你用的是 packagist.org、阿里云镜像还是私有仓库,composer show、show --who 这类命令读的都是本地 vendor/composer/installed.json 或已安装包的 composer.json,和源地址无关。
- 唯一影响是:如果镜像同步滞后,导致
composer update拉到的包元数据旧,show输出的依赖约束可能不是最新版 - 查完后发现依赖版本和文档不符?先运行
composer update --dry-run看是否能拉到新版,再重试show - 不要指望换镜像能让
depends突然查出结果 —— 它的问题不在网络,而在设计逻辑本身
真正容易被忽略的点是:同一个包名在不同上下文里代表不同东西 —— psr/log 是虚拟接口,monolog/monolog 是实现,composer show --who psr/log 查不到,但 composer show --who monolog/monolog 能查到。别让包名误导你,先确认你问的到底是“契约”还是“实现”。










