Composer show 命令不显示源码注释,因其仅读取 composer.json 和 installed.json 中的静态元数据,不解析 PHP 文件、不执行 AST 或反射,也不加载 README 或源码内容;-a 选项仅扩展元数据字段,仍不含任何代码内注释。

Composer show 命令完全不解析、不读取、也不展示包源码中的任何注释(包括 PHPDoc、TODO、@internal、// 注释等)。
为什么 show 不显示源码注释
它只读取 composer.json 元数据和 vendor/composer/installed.json 中的静态声明信息,不打开 PHP 文件、不执行 AST 解析、不调用反射。所谓“详情”,仅限于包作者在 composer.json 里填的内容:description、keywords、homepage、autoload、require 等字段。
-
description字段通常很短(如 "Logging library"),不是 README 全文 -
readme字段只有极少数包在发布时主动嵌入了完整内容,且需加-a才可能看到 - PHPDoc、类内注释、函数参数说明、@deprecated 标签等 ——
show视而不见 - 即使你用
--format=json,输出里也绝不会出现/** @var */或// TODO: refactor
show -a 能看到什么,不能看到什么
composer show -a vendor/package 是唯一能扩展输出的选项,但它仍受限于元数据本身:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 能显示:
name、version、description、keywords、homepage、source(Git URL + commit)、autoload映射、require列表 - 不能显示:源码中任意一行注释;哪怕
composer.json里写了"readme": "README.md",show -a也不会加载并渲染该文件 - 私有包若未在发布时把 README 内容写进 metadata(即没用
composer archive或 Packagist 的 embed 功能),-a也为空
想查源码注释,得换工具
如果你真需要从命令行快速定位某段注释(比如找 @deprecated 或 @see 引用),show 不是入口:
- 查 PHPDoc:用
grep -r "@deprecated" vendor/monolog/monolog/src/,注意路径要对(show -s可帮你确认 autoload 路径) - 查 TODO/FIXME:用
grep -nri "todo\|fixme" vendor/guzzlehttp/guzzle/src/ - 查类定义上下文:先用
show -s确认命名空间映射,再进对应目录用head -20 src/Client.php - IDE 或 LSP(如 PHPStan、Psalm)才能语义化理解注释含义;
show连语法高亮都没有
别指望 show 替代代码阅读——它只回答“我装了什么”,不回答“这段代码怎么写”。真正容易被忽略的是:很多人误以为 -a 或 --all 会拉取远程仓库的最新源码并扫描注释,其实它们连 Git clone 都不触发,纯走元数据缓存或 Packagist API。

















