
composer search 命令在 Composer 2.0+ 中已彻底删除,执行必报 Command "search" is not defined —— 不是配置错、没联网、也没拼错,是 Packagist 官方自 2022 年底关闭搜索 API 后,Composer 主动移除了该命令。
为什么 composer search 一定失败
这不是你本地环境的问题。Packagist 搜索后端服务已下线,Composer 2.2(2023 年发布)起连残留逻辑都清空了。即使你降级到 Composer 1.x,返回结果也仅限前 10 条、无分页、不支持过滤,且只匹配 name 和 description 的前缀,实际不可靠。
-
composersearch(无空格)是早已停更的第三方脚本,不兼容当前接口 - 加
--only-name或--type=library会直接报错:参数随命令一并消失 - 国内用户反复换镜像源(如阿里云、腾讯云)也无效——因为该命令根本不走镜像源
用 curl 直调 Packagist 搜索接口
目前最轻量、最准的替代方案是调用 Packagist 公开 JSON 接口:https://packagist.org/search.json?q=关键词。它仍在稳定运行,响应快、结构清晰。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(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=cache" - 带格式化(需装
jq):curl -s "https://packagist.org/search.json?q=log" | jq '.results[] | {name: .name, desc: .description}' - 没装
jq?至少加| head -n 20避免刷屏 - 国内用户建议加重试:
curl --retry 2 -s "https://packagist.org/search.json?q=redis" - 注意:
search.json只返回前 10 条,不支持分页;想多看几个候选,只能换词重试(如q=redis-cache或q=php-redis)
搜到包名后必须立刻验证:composer show 不是可选项
API 返回的只是名字和描述,不能说明它能在你项目里装得上。真实兼容性必须本地验证:
- 确认包是否存在且未废弃:
composer show monolog/monolog—— 成功返回说明可用;失败提示Package not found,大概率是 vendor 名大小写错误或拼错 - 查所有可用版本(含未安装):
composer show --all monolog/monolog,但注意它不显示每个版本的 PHP 要求 - 模拟安装,提前暴露硬性冲突:
composer require --dry-run phpunit/phpunit:^9,能立刻发现 PHP 版本不兼容、缺失ext-gmp等扩展、或依赖循环 - 如果你配了阿里云镜像源,
composer show会走镜像,比curl更快、更准,且直接反映你本地环境的真实可用性
别跳过 packagist.org 网页搜索
命令行只给名字和一行 description,远不够判断是否可用。真正决策点在网页上:
- 右上角的
Downloads/month、Last updated、requires php: ^8.2、GitHub star 数、是否有 open issues 标签 —— 这些composer search和composer show都不提供 - 支持高级语法筛选:
requires:phpunit、tag:laravel、type:library,比命令行精准得多 - 看到心仪包,复制页面上的
composer require vendor/package行时务必检查空格 —— 移动端易把symfony/console复制成symfony/ console,导致报错
最常被忽略的一点:搜到包名后,不验证就直接 require,等于把兼容性问题留到 CI 或上线时爆发。真实约束只有 composer show 和 --dry-run 才能暴露。










