Composer v2.0+ 已移除 search 命令,因其依赖过时 API 且体验差;推荐使用 Packagist 网站搜索并配合 composer require 或 composer show 查看详情,或用 curl + API 临时查询。

composer search 命令本身在现代 Composer(v2.0+)中已被移除,直接运行会报错 Command "search" is not defined.。这不是你配置错了,是官方主动删掉了这个功能。
为什么 composer search 找不到了
Composer 官方从 v2.0 开始弃用了 search 子命令,理由是它依赖 Packagist 的旧 API,响应慢、结果不准,且长期维护成本高。现在 Packagist 网站本身已提供更可靠的搜索体验,CLI 层面不再同步支持。
- 执行
composer search laravel会提示:Command "search" is not defined. - 即使降级到 Composer 1.x(如 1.10.22),该命令也仅返回极简文本结果,不支持分页、过滤或关键词高亮
- 它无法识别
type:library或abandoned:true等筛选条件
替代方案:用 Packagist 网站 + CLI 工具组合查包
最稳的方式是绕过 CLI 搜索,改用 Packagist 网页搜索,再配合 composer require 或 composer show 验证细节。
- 打开 https://www.php.cn/link/5d2e892c81e5fafc51ab0973879563a0,直接搜关键词(如
csv、redis) - 用右侧筛选栏限定
Type(如library、bundle)、Abandoned状态、PHP Version要求 - 点进包页面后,复制
require行(如"league/csv": "^9.0"),粘贴到composer.json或直接运行composer require league/csv - 想查已安装包的详情?用
composer show league/csv查版本、依赖、autoload 信息
如果非要在终端里“搜”,可用 cURL + Packagist API(临时应急)
Packagist 提供了公开的 REST API,虽然没官方 CLI 封装,但可以用一行 curl 快速试搜:
curl -s "https://www.php.cn/link/5d2e892c81e5fafc51ab0973879563a0search.json?q=mailgun" | jq '.results[] | "\(.name) \(.description)"'
- 需要提前装
jq(macOS:brew install jq;Ubuntu:apt install jq) -
q=后面支持空格分词,如q=laravel mail,但不支持布尔逻辑(AND/OR) - 返回结果不含下载量、更新时间等网页上能看到的字段,实用性有限
- 高频请求可能被限流,别写成自动化脚本长期调用
真正容易被忽略的一点:很多开发者花时间折腾怎么恢复 search 命令,其实不如花两分钟熟悉 Packagist 网站的筛选逻辑——比如按 “Last updated” 排序、勾选 “Only stable packages”,这些操作在网页上一目了然,在 CLI 里反而要拼一堆参数还不一定有。










