直接用 curl 调 Packagist 公开 API 最快,因无需开网页、不依赖 Composer 插件或额外工具;composer search 自 2.0 起已移除,执行报错“Command ‘search’ is not defined”。

直接用 curl 调 Packagist 的公开 API 最快,不用开网页、不依赖 Composer 插件、不装额外工具。
为什么不用 composer search?
这个命令早被弃用了——从 Composer 2.0 开始就彻底移除,执行会报错:Command "search" is not defined.。官方推荐走网页或 API,但很多人不知道 API 能直接终端调用。
- 网页搜索要等页面加载、输关键词、点筛选,还常被广告和推荐干扰
- 第三方插件(如
composer-search)需要全局安装、权限管理麻烦,且多数已停止维护 - Packagist API 响应快(通常
怎么用 curl 直接查包?
Packagist 提供了无认证的公开搜索接口:https://packagist.org/search.json?q=xxx。把 xxx 换成你要搜的关键词就行,比如搜日志相关包:
curl -s "https://packagist.org/search.json?q=logging" | jq '.results[] | "\(.name)\t\(.description)"'
说明:
-
-s静默模式,去掉进度条干扰 -
jq是可选但强烈建议装的(brew install jq/apt install jq),用来格式化输出;没装的话可用python -m json.tool替代 - 返回字段中
.name是完整包名(含 vendor),.description是简介,够你快速判断是否匹配需求 - 注意 URL 中的
q参数不支持通配符,但支持空格分词(如q=laravel cache redis会找同时含这三个词的包)
搜索结果不准?试试加 type 或限定 vendor
默认搜索是全文模糊匹配,容易混入无关包(比如搜 pdf 可能出来一堆带 “pdf” 字样的测试工具)。这时候可以:
- 加
type=library过滤掉project、metapackage等非库类型:https://packagist.org/search.json?q=pdf&type=library - 用
q=monolog/monolog精确搜某个 vendor 下的包名(支持斜杠) - 想看下载量高的?API 不直接返回 downloads,但按
downloads排序是默认行为,前几条基本就是主流选择 - 别信搜索页显示的“最近更新”,API 返回的
publishedAt才是真实发布时间,有些包只是改了 README 就刷时间
真正卡住人的地方不是找不到包,而是搜到一堆同名不同源的包后,没法快速判断哪个在维护、哪个已废弃。这时候得看 abandoned 字段(API 返回里有),值为 true 或指向新包名,比光看 star 数靠谱得多。


















