Composer包名必须为全小写、含单斜杠、不含中文/大写字母/空格/非法字符,否则直接报“is not a valid package name”错误;合规格式如your-vendor-name/your-package-name,且vendor与package均非空。

包名含中文或大写字母直接触发“is not a valid package name”
Composer 在解析 composer.json 的 name 字段时,会严格校验格式。只要出现中文、大写字母、空格、@、全角符号,或缺少斜杠,就会在 composer validate 或 composer install 阶段报错,错误信息是:is not a valid package name。
这不是警告,是硬性拒绝——哪怕只是 "name": "MyOrg/WeChatSDK"(含大写),也会失败。根本原因不是路径问题,而是 Composer 解析器根本没把这当成一个合法包,后续 autoload 映射、vendor 目录生成全部跳过。
- 检查所有
name字段:必须形如your-vendor-name/your-package-name,全小写、仅含字母、数字、短横线(-)、下划线(_)和点(.) - 确认 vendor 和 package 两部分都非空,且中间有且只有一个
/ - 复制粘贴时特别注意:中文输入法下可能混入全角斜杠
/或不可见字符(可用cat -A composer.json查看)
用 composer validate --strict 提前暴露命名问题
composer validate --strict 不检查 JSON 语法,但会强制校验 name 是否符合 Packagist 命名规范。它比 composer install 更早发现问题,且不依赖网络或锁文件。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 运行
composer validate --strict,如果报错包含name字段校验失败,说明命名违规 - 它还会检查
type拼写(如library不能写成libary)、authors是否为数组、是否漏掉必填字段等 - CI 脚本中建议前置该命令,避免等到
install阶段才中断构建
vendor 目录出现乱码名(如 weixin-sdk-886b1a)说明源头已污染
如果你发现 vendor/ 下某个目录名是十六进制哈希(如 weixin-sdk-886b1a),这不是路径编码问题,而是 Composer 解析失败后的降级行为:它放弃了按 name 创建目录,转而用源仓库 URL 的 hash 命名。
- 这种目录下,PSR-4 自动加载映射失效,
Class not found是必然结果 - 不要试图用
find vendor -name "*微信*" -exec rm -rf {} +清理——这只会破坏 autoload 映射,让问题更隐蔽 - 真正要做的,是找到对应包的
composer.json,把name改成合规格式(如myorg/wechat-sdk),再推送到私有仓库并更新repositories配置
私有包命名必须与 GitHub/GitLab 组织名一致
Packagist 强制要求 vendor 名与代码托管平台用户名/组织名完全一致。如果你在 GitHub 的组织是 acme-inc,就不能用 acme 或 mycompany 作 vendor 名,否则提交会被拒绝;本地 require 时即使没被占用,也会因校验失败而报 is not a valid package name。
- 私有包务必禁用默认 Packagist 源:
"packagist.org": false,并在repositories中显式声明私有仓库地址 - 避免用公司域名倒写(如
com-example)当 vendor 名——Packagist 不验证所有权,但别人可能已注册,且社区不认 - package 名建议加领域前缀,比如
acme-inc/payment-sdk,而非acme-inc/sdk,降低冲突概率
name 字段就直接 require —— 表面能装上,vendor 目录却已埋雷。命名合规不是“装得上就行”,而是 autoload 能否生效的第一道门槛。

















