composer search 命令自 composer 2.2 起已彻底移除,因 packagist 于 2022 年底关闭搜索 api;替代方案是直接调用 packagist.org/search.json 接口并用 curl + jq 处理结果。

composer search 命令在 2026 年已完全不可用
你敲 composer search log 或 composer search cache,一定会得到 Command "search" is not defined。这不是配置问题、镜像问题,也不是你没更新 Composer——Packagist 官方早在 2022 年底就关闭了搜索 API,Composer 2.2(2023 年发布)起彻底移除了该命令。所有旧教程里写的 --only-name、--type=library、多关键词“与”逻辑,全失效。
替代方案:用 curl 直调 Packagist 搜索接口
目前最轻量、稳定、无需额外安装的替代方式,就是直接请求 Packagist 的公开 JSON 接口:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
curl -s "https://packagist.org/search.json?q=log"—— 返回原始 JSON,含包名、描述、下载数等字段 - 加
jq格式化可读性:curl -s "https://packagist.org/search.json?q=redis" | jq '.results[] | {name: .name, desc: .description}' - 国内用户建议加重试:
curl --retry 2 -s "https://packagist.org/search.json?q=queue" - 注意:该接口默认只返回前 10 条结果,不支持分页;搜不到想要的包?换词重试,比如试
http client而非仅http
搜到包名后必须立刻验证本地兼容性
网页上热门、高 star 的包,不代表你能装得上。真实约束只有 composer show 和 composer require --dry-run 才能暴露:
-
composer show monolog/monolog查看最低 PHP 版本、依赖项、是否 abandoned -
composer show -s monolog/monolog精简输出,快速扫清关键约束 -
composer require --dry-run monolog/monolog模拟安装,提前暴露版本冲突或 ext-xxx 缺失(如ext-gmp在某些 Docker 镜像中默认未启用) - 特别注意包页右上角的
abandoned标签——比如ircmaxell/password-compat已弃用,但旧搜索可能仍把它排前面
依赖树不是搜索功能,但常被误当作“图层搜索”
有人把 composer show -t 或 composer depends -t 当作“图层搜索”,其实它只是当前 vendor 状态的快照,和搜索无关:
-
composer show -t显示已安装包的依赖层级,只反映vendor/里实际存在的结构 -
composer depends -t symfony/console可反向追踪谁引入了该包,但结果为空 ≠ 没被用,可能是通过 autoload 手动加载或插件动态注册 - 依赖树不准?先确认
composer.lock和vendor/是否一致;手动删过包、改过composer.json却没install,树就是过期的
composer show 的输出细节、grep 类名、或 IDE 的符号跳转里。










