Composer search已移除,应通过Packagist.org网站搜索并人工验证PHP兼容性、下载量和更新频率;命令行仅作初筛,真实决策需依赖网页端详情。

别指望 composer search 直接帮你挑出“最合适的库”——它只负责甩给你一串名字,真正做决策得靠 Packagist 网站,而且必须人工交叉验证 PHP 版本、下载量和更新频率。
为什么 composer search 结果不能直接信
这个命令本质是 Packagist 的极简 CLI 接口,不返回任何版本兼容性、PHP 要求、稳定状态或维护活跃度。你搜 composer search cache,结果里可能混着一个三年没更新、require "php": ">=5.6.0" 的废弃包,但命令行不会标红警告。
- 不支持通配符:
log*会报错,cache和caching是两个搜索词 - 多词组合是“与”关系,但太细会漏包:比如
composer search laravel redis queue可能刷不出spatie/laravel-redis-cache,因为它的描述里写的是 “Redis cache driver”,没提 “queue” -
--only-name很关键:默认会匹配描述字段,composer search laravel可能拉出一堆 Symfony 包(只因描述写了 “Laravel-compatible”) - 输出无排序逻辑:热门包不一定排前面,
grep -i或| less是刚需
查已知包名后,用 composer show 干什么、不干什么
composer show 不是搜索引擎,输 composer show log 基本等于白敲。它只对**完整且准确的 vendor/package-name** 有效。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 查已安装包详情:
composer show monolog/monolog显示当前版本、依赖树、autoload 配置 - 查所有可用版本:
composer show --all monolog/monolog,但它不显示每个版本的php约束——这点必须去 Packagist 看 - 私有包要手动指定仓库:
composer show --repository '{"type":"composer","url":"https://your.repo"}' your/private-package,填 Git URL 会直接报Could not parse version constraint - 想筛“带 pdf 的包”?别用
show,那是search的活;show --all | grep -i pdf只返回包名+一行描述,没有版本上下文
Packagist.org 上必须盯死的三个字段
命令行初筛完,必须开网页点进去看。那些不起眼的字段,决定你下周是不是在修兼容性 Bug。
- Downloads / month:低于 500 次/月 + 最近更新超过 6 个月 = 高风险信号,尤其当你的项目要上生产
- Last updated:不是看 “latest stable”,而是点进版本列表,确认最新 tag 是否在近 3 个月内发布
-
require.php 字段:比如
"php": "^8.0"表示不兼容 PHP 8.2+ 的只读类语法,而"php": ">=8.0 才明确排除 8.3 —— 光看 latest stable 版本号会误判 - GitHub stars 数只是参考,重点看 Issues 和 PR 的响应速度:大量 open issues + 无人 close = 维护乏力
镜像源没生效?composer install -vvv 日志才是唯一证据
配了阿里云镜像却还是慢,大概率是镜像根本没走通。别猜,直接看日志。
- 执行
composer clear-cache清旧缓存,再删vendor/和composer.lock - 运行
composer install -vvv 2>&1 | grep -i "mirrors\.aliyun",必须看到类似Downloading https://mirrors.aliyun.com/composer/p2/monolog/monolog.json才算真生效 - 如果日志里还是
packagist.org或api.github.com,检查两点:composer config -g repo.packagist看全局配置,再进项目目录跑composer config repo.packagist看项目级是否被覆盖 - 注意:
composer.lock里存的是 dist URL,如果它还是原始 GitHub 地址,Composer 会绕过镜像直连——此时必须删 lock 重装
最常被跳过的动作是:搜完包名、看了 show、甚至装上了,却没点开 Packagist 页面核对 require.php 和下载量。PHP 版本小数点后的差异,足够让整个 CI 流水线卡住两小时。

















