Composer vendor名必须全小写,否则Packagist在页面加载时即校验失败、禁用提交按钮;账号映射硬绑定导致大小写不一致时拒绝抓取仓库、不显示release、不解析依赖,且本地autoload也会因路径匹配断链而Class not found。

Composer 的 vendor 名在所有环节都必须小写,不存在“大小写敏感但允许混用”这种中间状态——写错就直接中断,不是报错后还能凑合跑。
为什么 vendor 名大小写错误会导致 Packagist 拒绝提交
Packagist 在页面加载阶段就校验 composer.json 中的 name 字段,只要 vendor 部分含大写字母(如 MyVendor/my-package),就会卡在表单提交前,连错误页都不显示。它不尝试标准化、不 fallback、不提示“建议改成小写”,而是直接禁用提交按钮。
背后原因是 Packagist 账号映射逻辑硬绑定:你注册的账号是 acmecorp,那所有包的 vendor 必须严格等于 acmecorp(全小写)。哪怕只差一个 C,Packagist 就认为这不是你的包,拒绝抓取仓库、不显示 release、不解析依赖。
-
name写成AcmeCorp/toolkit→ Packagist 页面空白,控制台报 400 -
name是acmecorp/toolkit,但 GitHub 仓库名含大写 → 不影响,Packagist 只认name字段 - 本地
composer require AcmeCorp/toolkit可能临时成功(旧版兼容),但composer install时会因 vendor 名不一致失败
vendor 名大小写不一致引发的 autoload 失败场景
即使你绕过 Packagist,强行在本地用错误 vendor 名安装,Class not found 问题几乎必然出现,根源不在代码,而在路径推导断链。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
Composer 默认按 name 推导 PSR-4 命名空间前缀(比如 acmecorp/toolkit → AcmeCorp\Toolkit),再映射到 src/ 下目录。但如果你 name 写成 AcmeCorp/toolkit,而实际文件结构是 src/Toolkit/,命名空间又声明为 AcmeCorp\Toolkit,Linux 下 src/Toolkit/ 和 src/toolkit/ 就是两个路径——自动加载器根本找不到文件。
- 运行
composer dump-autoload -o后,打开vendor/composer/autoload_psr4.php,检查键值对中的路径是否与ls -l显示的真实路径逐字符一致(包括大小写) - IDE 重命名类时,若只改了
namespace或类名,没同步改文件夹名(如把src/Toolkit/改成src/toolkit/),Linux 容器里立刻Class not found - Git 在 Windows/macOS 上默认
core.ignorecase = true,git status看不到Toolkit/→toolkit/的变更,协作时别人拉代码直接丢文件
如何验证 vendor 名是否真正生效
别只信 composer install 成功,要确认 vendor 名已穿透到所有依赖解析环节。
最直接的方式是查 vendor/composer/installed.json:找到你包的条目,看 name 字段是否为全小写;再执行 composer show acmecorp/toolkit(注意这里必须用小写 vendor),如果返回包信息,说明 Packagist 已正确识别;如果报 Package acmecorp/toolkit not found,大概率是 Packagist 没抓取或账号映射失败。
- 本地测试时,用
composer require acmecorp/toolkit:dev-main(全小写)而非AcmeCorp/toolkit - 发布前先运行
composer validate,它会提前暴露Invalid package name "AcmeCorp/toolkit"这类错误 - 如果之前用错误 vendor 名发布过包,Packagist 上需手动弃用旧包(mark as abandoned),否则新包不会被索引
vendor 名不是命名风格偏好,是 Composer 解析链的锚点。改名不是改一个字段的事,它牵扯 Packagist 账号、Git 仓库路径、PSR-4 目录结构、甚至团队 Git 配置。最容易被忽略的是:改完 name 后,composer clear-cache 必须执行,否则旧缓存里的错误 vendor 映射还在生效。

















