Packagist官网搜索比composer search更可靠,支持排序和详情查看;查版本需用composer show --all --remote;查完整依赖树用--tree;自动化应调用Packagist API。

直接查 Packagist 网站比 composer search 更靠谱
命令行搜包快,但信息太单薄——composer search 只匹配包名、描述和 keywords 字段,不支持布尔逻辑(比如不能搜 log NOT monolog),也不显示下载量、最近更新时间、PHP 版本兼容性这些关键判断依据。
- 查图像处理包?输
composer search image会出来几十个结果,但你不知道哪个支持 PHP 8.3、哪个半年没更新、哪个连测试都没写 - 想确认一个包是否活跃?
composer search给不了 GitHub Issues 数或最近一次 commit 时间 - 实际建议:先去 packagist.org 搜关键词,按 “Downloads / month” 或 “Last updated” 排序,点进详情页看
type(是library还是project)、require里的 PHP 约束、以及 GitHub 仓库链接
composer show --all --remote 才是查版本的正确姿势
很多人用 composer show vendor/package 却发现看不到最新版,比如 monolog/monolog 已发布 v3.6.0,但本地输出还停在 v3.5.0——这不是包没更新,是 Composer 默认读缓存,不是实时查 Packagist。
- 必须加
--all(等价于-a)强制跳过本地缓存 - 必须加
--remote明确指定查远程仓库(否则可能只显示已安装过的版本) - 组合起来才是真实全量版本列表:
composer show --all --remote monolog/monolog - 如果只要干净的版本号列表,可管道给
jq:composer show -a --remote --format=json monolog/monolog | jq -r '.versions | join("\n")'
查已安装包,别只用 composer show
composer show 默认只列 composer.json 里直接写的包(即顶层依赖),而真实项目里大量功能来自二级、三级依赖——比如你装了 laravel/framework,但真正干活的可能是它依赖的 symfony/http-foundation,这个默认就看不见。
- 要看完整依赖树,必须加
--tree:composer show --tree - 只想确认某个包是否被装进来了(不管哪一层),用
composer show | grep package-name最快 - 查全局工具(如
php-cs-fixer)?得换命令:composer global show,否则在项目目录下永远找不到 - 注意:所有
show类命令都要求当前目录有composer.lock,否则会报错或返回空
批量查包或集成到脚本?用 Packagist API 而不是硬敲命令
如果你要写 CI 脚本检查依赖是否过期,或者做内部包管理平台,靠人工敲 composer show 或 search 完全不可行——它们不是为自动化设计的,没有稳定结构化输出,也没有分页、过滤等能力。
- 官方 API 地址是
https://www.php.cn/link/ec811d0d775adc62776ba80fadd4ed19/search.json?q=xxx,支持type、per_page、page参数 - 想只找库类包?加
&type=library;要排除 dev-only 包?API 返回里看abandoned字段 - PHP 项目里可用
knplabs/packagist-api客户端,比自己拼 HTTP 请求更稳;但注意它不维护 Composer 本地状态,只是个 Packagist 查询代理
最常被忽略的一点:Packagist 的搜索结果和 Composer 安装行为不是强一致的——有些包设置了 "minimum-stability": "dev",search 能搜到,但默认 require 不会装,得手动加 @dev 后缀。这坑不踩一遍很难记住。










