Composer 2.2+ 已彻底移除 search 命令,因 Packagist 关闭搜索 API;推荐用 curl 调用 /search.json 接口配合 jq 快速查看结果,或用 composer show 和 --dry-run 在本地验证包可用性与兼容性。

composer search 命令已经彻底不能用了
从 Composer 2.2 开始,composer search 命令被官方移除,不是你装错了、没换源、也没配错环境——Packagist 关闭了搜索 API,底层支撑没了,命令直接报错:Command "search" is not defined。哪怕你降级到 Composer 1.x,结果也极简、无分页、不标弃用(abandoned)、不显示 PHP 版本兼容性,基本没法用于真实选型。
- 别再试
composer search log或composer search laravel,它们在 2026 年已完全失效 - 网上教程里写的
--only-name、type:library等参数,全都不起作用 - 即使 curl 能通,Packagist 的
/search.json接口也只返回前 10 条,且不支持分页或布尔运算(比如cache AND redis)
用 curl 直查 Packagist API 是最轻量的替代方案
不用装额外工具,一行命令就能拿到结构化结果,适合快速扫一眼有哪些包名和描述匹配关键词:
curl --retry 2 -s "https://packagist.org/search.json?q=pdf" | jq '.results[] | {name: .name, desc: .description}'
- 没装
jq?至少加个| head -n 20看前几条 JSON,避免刷屏 - 关键词支持空格“与”逻辑,比如
q=cache redis,但不支持引号短语或NOT - 国内用户务必加
--retry 2,防网络抖动导致空响应 - 注意:返回结果按相关性排序,但“相关性”由 Packagist 内部算法决定,和你项目实际需求无关
真正要装的包,得用 composer show 和 --dry-run 验证
网页上搜到的热门包,可能早已被弃用、不支持你的 PHP 版本,或依赖冲突到根本装不上。与其信搜索结果,不如直接验证它在你环境里能不能活:
- 查包是否存在、是否活跃:
composer show league/csv—— 成功返回说明可用,带abandoned标识就别碰 - 模拟安装,看真实约束:
composer require --dry-run phpunit/phpunit:^9—— 会报出 PHP 版本不符、依赖循环、ext-mbstring 缺失等硬性问题 -
composer show走的是你当前项目的仓库配置(含镜像源),响应快、结果准,比远程 API 更贴近实际 - 移动端复制包名容易多空格,比如把
symfony/console复成symfony/ console,composer show会立刻报Package not found,比 require 报错更早发现问题
深度评估一个包,得离开命令行去看 GitHub
Packagist 页面不显示最近是否有维护动作,Stars 数和下载量也不代表它现在能用。你真正该盯的是作者是否还在干活:
- 点进包详情页,找 “Source” 链接跳转 GitHub,看
Recent Commits是否在近 3 个月内有推送 - 翻
Issues,尤其看有没有人提 PHP 8.3 兼容问题,作者是否回复 - 检查
composer.json里的require.php字段,对比你本地php -v输出 - 别只看“Top Packages”榜单——很多高下载量包是 Laravel 框架默认带的,你项目未必需要
composer show 的输出、--dry-run 的报错,以及 GitHub 上那几行 commit 记录。










