composer info 是 composer show 的完全等价别名,执行逻辑、参数支持和输出行为均一致,官方推荐统一使用 show 以避免团队歧义。

composer info 是 composer show 的完全等价别名,不输出额外信息,也不改变行为——它查的仍是当前项目中已安装(或 composer.lock 中锁定)的包元数据。
composer info 和 composer show 真的不一样吗
- 两者在 Composer 源码中注册为同一命令,执行逻辑完全一致
- 官方文档只提
show,但info被保留为兼容别名,所有参数(-s、--tree、--all等)都可互换使用 - 团队协作中建议统一用
composer show,避免新人误以为info是“轻量版”或“只读模式”
为什么 composer info monolog/monolog 只显示一行版本号
- 这不是
info特有现象,而是composer show默认行为:不加任何参数时,只输出vendor/package version一行 - 想看到作者、autoload、require 列表,必须显式加
-s(即--summary) - 常见误操作:输完命令看到单行输出就以为“查不到详情”,其实只是没告诉 Composer 要展开
composer info 查不到包的几种典型原因
- 包名漏写
vendor/前缀,例如composer info monolog→ 报错Package not found - 大小写错误,
Monolog/Monolog和monolog/monolog不等价 - 包仅声明在
require-dev,但你运行过composer install --no-dev,它就不在已安装列表里 - 当前不在项目根目录下执行,
composer.lock或vendor/不可访问 - 包是
path类型仓库引入的,composer info仍按 Packagist 元数据展示,不反映本地修改
怎么用 composer info 快速验证 autoload 映射
- 直接运行
composer info -s vendor/package-name - 输出中找
autoload字段,重点关注psr-4或psr-0下的命名空间到路径映射 - 示例:
composer info -s monolog/monolog输出"Monolog\": "src/",说明Monolog\Logger对应vendor/monolog/monolog/src/Logger.php - 若类加载失败,优先核对这个路径是否存在、是否拼写一致(比如
src/末尾有没有斜杠、命名空间结尾有没有反斜杠)
真正容易被忽略的是:这个映射只在 composer dump-autoload 后生效,改了 composer.json 里的 autoload 却没重生成自动加载文件,composer info -s 显示的永远是旧配置。











