composer show -t 不支持 --max-depth(composer 2.5+ 已移除 --tree),必须用 composer show -t vendor/package-name 聚焦单点或 composer show --no-dev -t . 过滤开发依赖,且需确保 vendor/ 和 composer.lock 已同步。

别硬啃缩进嵌套超过6层的 composer show -t 输出——它不是你理解力不够,是纯文本树天生不适合人眼定位关键路径。真正有效的做法是用参数提前收口,而不是靠眼睛扫。
为什么 composer show -t 加了 --max-depth 还没效果
--max-depth 只在 composer show --tree(2.0–2.4)中有效;Composer 2.5+ 已移除 --tree,统一用 -t,但它**不支持 --max-depth**。试图运行 composer show --max-depth=2 -t . 会被忽略,输出仍是全量树。
- 确认版本:运行
composer --version,若为 2.5.x 或更高,--max-depth无效,必须换策略 - 替代方案:用
composer show -t vendor/package-name聚焦单点,比限制深度更可控 - 终端宽度不足时,缩进错位会让“看似同一级”的包实际层级不同,建议重定向到文件后查看:
composer show -t . > deps.txt
过滤开发依赖时参数顺序写错就白干
--no-dev 必须放在 -t 前面,否则被当成对 -t 的修饰而失效。写成 composer show -t --no-dev . 不会过滤,仍显示所有 require-dev 包。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 正确写法:
composer show --no-dev -t .(生产环境依赖树) - 错误写法:
composer show -t --no-dev .(等价于composer show -t .) - 如果项目用了大量
require-dev(如 phpunit、infection、phpstan),漏掉--no-dev会导致输出膨胀 3–5 倍,关键路径被淹没
想查“谁在拉这个包”,别用 composer depends
composer depends 是实验功能,默认关闭,且对 provide、replace 和本地 path 仓库识别极差,容易漏判甚至返回空结果。
- 可靠方式是组合使用:
composer why --tree vendor/package-name,末尾出现your-project-name dev-main才算确认是你自己写的require -
composer show --who vendor/package-name更底层,直接扫描所有已安装包的require字段,结果确定性高 - 如果
composer show --who返回空,不代表没人用——可能是通过虚拟包提供,比如psr/log-implementation,此时得回看全量树:composer show -t . | grep -A 3 -B 1 "psr/log"
中文包名或带空格路径下 composer show -t 显示异常
Composer 原生命令不处理中文包名或含空格的本地路径。如果你的 composer.json 中有 "repositories" 指向本地中文路径,或用了非标准命名的私有包,show -t 可能截断、乱码或跳过该节点。
- 这不是编码问题,是 Composer 解析器对非 ASCII 字符路径未做标准化处理
- 临时绕过:把本地仓库路径改为英文(如
./packages/my-lib),再运行composer update同步 lock 文件 - 真正要分析这类项目,必须切到可视化工具:
composer-dependency-graph生成 HTML 图,它对 UTF-8 包名支持稳定,节点文字可正常渲染
最常被忽略的一点:所有 composer show -t 类命令读的都是 vendor/ 和 composer.lock 的实时快照,不是 composer.json 里写的“愿望”。刚改完 JSON 就跑 show -t,看到的还是旧树——先 composer update 或至少 composer install 同步 lock,否则所有分析都建立在过期数据上。










