能,但默认只列顶层依赖;查全部已安装包(含传递依赖)必须用 composer show --tree,查直接依赖用 --direct,查单个包详情需指定包名,查反向依赖用 composer depends。

composer show 命令能直接列出所有依赖及其版本吗
能,但默认输出是扁平列表,不体现层级关系。执行 composer show 会显示所有已安装包(含根项目和全部递归依赖),按字母排序,不含依赖树结构。如果只想看直接声明在 composer.json 中的依赖,加 --direct 参数:composer show --direct。
注意:该命令不统计重复引用、冲突版本或未解析的约束,仅反映当前 vendor/ 中实际安装的结果。
用 composer depends 查某个包被谁依赖
当想定位某个底层库(比如 monolog/monolog)被哪些上游包引入时,composer depends 是唯一可靠方式。例如:composer depends monolog/monolog 会列出所有直接或间接依赖它的包,并标出依赖路径深度。
常见误操作是漏掉包名全称(必须含 vendor/name 格式),或误用 composer show -t —— 后者只显示当前项目的依赖树,不反查依赖关系。
- 若返回空,说明该包未被任何已安装包引用(可能已被移除或未生效)
- 加
-t可展开树形输出,但层级过深时易混乱,建议配合head -20截断 - 不支持通配符,
composer depends monolog/*会报错
生成可读性更强的依赖统计报告
原生命令不提供聚合统计(如按类型分组、版本分布、安全警告数),需组合 shell 工具。一个实用的一行命令:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
composer show --format=json | jq -r '.[] | "\(.name) \(.version) \(.type)"' | awk '{a[$3]++} END {for (i in a) print i ": " a[i]}' | sort
这段命令会按 type(如 library、metapackage)分组计数。若要统计重复出现的版本号:
composer show --format=json | jq -r '.[].version' | sort | uniq -c | sort -nr
注意:jq 需提前安装;Windows 用户需改用 PowerShell 或 WSL,原生 CMD 不支持管道链式处理。
为什么 composer outdated 总是提示“无更新”但实际有安全风险
composer outdated 默认只检查稳定版本更新,忽略 dev 分支和安全补丁版本(如 ^7.2.0 锁定到 7.2.1,但 7.2.5 已发布安全修复)。真正检测已知漏洞要用 composer audit(Composer 2.2+ 内置)。
-
composer audit调用 Packagist 的安全告警数据库,输出格式为 CVE 编号 + 影响版本范围 - 若提示 “No security advisories found”,不代表绝对安全,仅表示当前安装版本未被公开记录为高危
- 审计结果不会自动升级,需人工判断后执行
composer update vendor/package
依赖统计不是一次性动作——锁文件变更、开发分支切换、甚至 composer install --no-dev 都会改变实际加载的依赖图。别信缓存的报告,每次排查前先确认 vendor/ 和 composer.lock 状态一致。










