composer show 命令可直接查看包的 keywords 标签,如 composer show monolog/monolog 输出中 keywords 行即为目标信息;keywords 在 composer.json 中须写为小写英文字符串数组(如 ["logging", "psr-3"]),影响 packagist 搜索排序但不保证命中,且 composer search 不检索 keywords 字段。

composer show 命令直接查 keywords
想快速知道某个包打了哪些标签(keywords),composer show 是最直接的命令,不用进源码、也不用翻 GitHub 页面。它默认输出包的 name、version、description、keywords、homepage 等字段,其中 keywords 就是你要的信息。
实操建议:
- 查单个包:
composer show monolog/monolog,输出里找keywords行 - 查已安装包的完整字段(含 keywords):
composer show --all,但会列出全部包,信息量大,建议配合grep过滤:composer show --all | grep -A 5 "monolog" - keywords 是 composer.json 里定义的数组,不是动态生成的,所以不会反映运行时行为或兼容性变化
keywords 字段在 composer.json 中怎么写才有效
keywords 不是装饰字段,它影响 packagist.org 的搜索排序和语义匹配。但很多人写得随意,导致搜不到或被误判。
实操建议:
- 用小写英文单词,逗号分隔,不加引号(JSON 格式要求字符串必须带引号,所以实际要写成
"keywords": ["logging", "psr-3"]) - 避免宽泛词如
php、library,packagist 会忽略这类停用词 - 优先填具体能力或标准:比如
psr-7、http-client、laravel-package,比web或tool更有用 - 别写版本号(如
php81),keywords 不做兼容性判断,PHP 版本约束应写在require.php里
packagist.org 上按 keywords 搜索的实际效果
在 packagist.org 搜索框输关键词,本质是全文检索 + keywords 加权。但它的权重逻辑不透明,容易让人误以为“写了就一定能搜到”。
常见错误现象:
- 搜
cache出一堆结果,但你想要的包没排前面——因为它的keywords是redis-cache,而cache本身是停用词,不触发匹配 - 搜
psr-14没结果,其实是包作者写了psr14(无短横)或event-dispatcher,关键词不统一 - 大小写敏感:搜
HTTP不如搜http,packagist 搜索默认小写归一化,但部分旧包 keywords 仍存大写形式,匹配失败
所以靠 keywords 发现包,更适合作为辅助手段;真要找特定能力,不如直接搜 GitHub + composer.json keywords:。
用 composer search 命令查 keywords 效果有限
composer search 看起来是专门搜包的,但它只匹配 name 和 description,完全不看 keywords 字段。这是很多人踩坑的地方——以为输个关键词就能把所有标了该 tag 的包拉出来。
实操建议:
- 别依赖
composer search logging找日志相关包,它大概率漏掉monolog/monolog(因为其 description 是 “Sends your logs to files, sockets…” ,不含 “logging”) - 如果非要用命令行批量发现,可以临时 clone packagist 的公开数据集(如 https://www.php.cn/link/9558be539e988fbb9df02fcd4dffbad7),再本地 grep keywords 字段
- 更现实的做法:用 packagist 网页搜索,打开一个疑似包后,手动点进
composer.json查 keywords —— 虽然麻烦,但准确
keywords 是作者写的元信息,不是机器可推导的特征。搜不到,大概率不是命令不对,而是别人根本没打你想要的那个 tag。











