composer show -s 失败是因为 -s 不是 show 命令的合法短选项;正确用法是 composer show --summary(需 Composer ≥2.5.0 且不带包名),可显示“14 packages installed”等概览信息。

composer show -s 并不是一个有效的 Composer 命令,执行会报错:Command "show -s" is not defined.
为什么 composer show -s 会失败
Composer 的 show 命令不接受 -s 短选项。它支持的选项是 -s 的“镜像”——但其实是 --summary(完整拼写),且该选项仅在 Composer 2.5.0+ 版本中引入,且**仅对 composer show 不带包名时生效**。
-
composer show(无参数):列出所有已安装包,--summary会压缩显示为一行统计(如12 packages installed) -
composer show vendor/package:显示指定包详情,--summary被忽略,不会生效 -
composer show -s:直接报错,因为-s未注册为合法短选项
想看项目概况,该用什么命令
真正能快速获取项目整体信息的命令是:
-
composer show --summary:输出类似14 packages installed, 3 platform packages, 2 platform repositories的概览(需 Composer ≥2.5.0) -
composer info:等价于composer show,但更明确表达“项目信息”意图;加--summary效果同上 -
composer list --format=json | jq '.commands | map(select(.name | startswith("show")))':查可用子命令(需jq),确认当前版本支持哪些选项
不同 Composer 版本的行为差异
--summary 不是向后兼容的“默认功能”,低版本会静默忽略或报错:
- Composer 2.4.x 及更早:运行
composer show --summary会提示There are no commands defined in the "show" namespace.或直接显示全部包列表(无视该选项) - Composer 2.5.0+:仅当
composer show无参数时响应--summary;若误加包名(如composer show laravel/framework --summary),选项被丢弃,仍显示完整包详情 - 检查版本:运行
composer --version,确保 ≥2.5.0 再依赖--summary
替代方案:用 composer status 和 composer validate 补全概况
单纯数字统计不够?项目“概况”还包含状态与合规性:
-
composer status:检查vendor/是否与composer.lock一致,输出修改文件数(如You have 3 modified files) -
composer validate --no-check-publish:验证composer.json格式和字段合法性,失败时直接暴露配置问题 - 组合使用:
composer show --summary && composer status是最轻量的双指标快检
别记错短选项——-s 在 Composer 里属于 search、status 等命令,唯独不属于 show。真正要查概况,盯住 --summary 这个长选项,并确认你的 Composer 版本够新。










