composer search 仅支持包名和 description 前缀匹配,非全文检索,搜 logging 不命中 monolog/monolog;应优先用 packagist.org 网页搜索并利用 requires:、tag: 等高级语法筛选。

别指望 composer search 找到你想要的包——它只是个粗糙的前缀匹配器,真要选型,90% 的时间该开浏览器搜 packagist.org。
为什么 composer search 经常搜不到东西
它只做两件事:匹配包名(vendor/name)和 description 字段的**前缀**,不是全文检索。搜 logging 不会命中 monolog/monolog,因为它的 description 是 “Sends your logs to files, sockets, inboxes, databases and numerous web services”,开头是 “Sends”,不包含 logging。
- 搜
jwt可能空手而归,但firebase/php-jwt实际是主流选择——它的 name 和 description 都没写jwt,只写了 “A simple library to encode and decode JSON Web Tokens” - 搜
cache redis看似合理,但实际匹配逻辑是“description 或 name 里连续出现cache再出现redis”,不是布尔“与” - 国内直连
packagist.org常超时或返回空,composer config -g repo.packagist设镜像也救不了——阿里云源(https://mirrors.aliyun.com/composer/)目前稳定,但停更的 php.cn 镜像已不可用
composer search 有哪些可用参数能稍微提效
它支持几个实用选项,但文档藏得深,多数人根本没用过:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
--only-name:强制只查包名,避免 description 里带词的干扰包混进来。比如搜laravel,加这个才不会把symfony/http-foundation(description 含 “Laravel-compatible…”)也列出来 -
--type=library:过滤类型,常用值有library、project、metapackage。注意:不支持type:plugin这类语法,也没--tag参数 -
--format=json:输出 JSON,适合写脚本批量处理。例如:composer search cache --format=json | jq '.[].name'提取所有包名 - 不支持
--min-stability或 PHP 版本过滤,这些只能去网页端点选
搜到包后,下一步必须做什么
命令行只给名字和一行 description,远不够判断是否可用:
- 立刻跑
composer show vendor/name,看requires是否含你不兼容的扩展(比如ext-igbinary)或 PHP 版本(如"php": "^8.2") - 检查
abandoned状态:网页上包页右上角标红的 “This package is abandoned” 比任何命令都准;composer show不显示这个字段 - 别信下载量数字——有些包被大量 require 进其他包(比如
psr/log),但本身不直接供人安装 - 如果项目用 Laravel,优先看包页有没有
laraveltag 或 “Laravel Service Provider” 描述,否则可能要自己写集成逻辑
真正高效找包的流程是什么
把 composer search 当作验证工具,不是发现工具:
- 先去 packagist.org 搜功能词(如 “rate limiting”),用右侧 filters 锁定
PHP >= 8.1、Sort by: Last updated、去掉Abandoned标签 - 点进前三名,扫一眼
require、autoload、GitHub stars、最近 commit 时间 - 确认无误后,在终端执行
composer require vendor/name,而不是从search结果里抄 - 如果公司用私有 Packagist(如 Satis 或 Private Packagist),
composer search才真正有用——它会查你配置的所有源,包括本地镜像
最常被忽略的一点:Packagist 网页搜索支持 requires:phpunit、tag:psr-18 这类语法,命令行完全不支持。想精准筛选,别省那几秒切窗口。










