composer show vendor/name 可快速验证包名是否在Packagist注册:若报“Package not found”则未注册;若显示基本信息,仅说明已注册,不保证可安装,需用 composer require --dry-run 或直调 Packagist API 进一步验证。

用 composer show 查包名是否被注册(但不保证可安装)
直接运行 composer show vendor/name 是最快的一线验证方式。如果包名在 Packagist 官方源中完全不存在,会报错:Package vendor/name not found;但如果包存在但当前平台不兼容(比如只支持 PHP 8.3+,而你用的是 PHP 8.1),它仍会显示基本信息,只是 require 时失败。所以这个命令只能确认“注册状态”,不能替代安装验证。
用 composer require --dry-run 模拟安装判断实际可用性
真正要确认“能不能装上”,得走安装流程的前置校验。运行:
composer require vendor/name --dry-run --no-interaction
它会完整走一遍依赖解析、版本约束匹配、平台检查和源可用性验证,但不写入 composer.json 或下载代码。常见失败原因包括:
-
Could not find package vendor/name at any version→ 包名拼写错误或未在 Packagist 注册 -
Your requirements could not be resolved→ 存在但无满足当前 PHP/Composer 版本的 release -
Could not fetch https://packagist.org/p2/vendor/name.json→ HTTP 404,确认包名大小写和 vendor 名是否准确(Packagist 区分大小写,但 GitHub 不区分)
手动查 Packagist API 避免缓存干扰
Composer CLI 有时会命中本地缓存,导致结果滞后。最权威的方式是直连官方 API:
curl -s "https://packagist.org/packages/vendor/name.json" | jq -r '.package.name'
如果返回 404 Not Found,说明该包名从未被提交或已被删除。注意两点:
- URL 中的
vendor/name必须与composer.json里声明的name字段完全一致(包括连字符、下划线) - 有些包虽在 Packagist 页面能搜到,但 API 返回 404——这是因 Packagist 已弃用该包,仅保留页面索引(例如旧版
monolog/monolog的某些废弃别名)
为什么 composer search 不可靠
composer search keyword 只查包描述和关键词,不校验包名唯一性或可用性。它可能返回一堆带 keyword 的包,但你要的 vendor/name 根本没注册。更糟的是,它默认只查前 10 个结果,且不暴露匹配精度。真要靠搜索定位,不如直接打开 https://packagist.org/search/?q=keyword 页面人工核对。
实际验证时,别跳过 --dry-run 这步。很多“看起来存在”的包,卡在 platform config 或 stability flag 上,只有模拟安装才暴露真实瓶颈。


















