Composer的authors字段必须是对象数组,每个元素至少含name字符串,email、homepage、role可选;写成字符串或单对象会导致validate报错且工具无法识别。

Composer 的 authors 字段不参与依赖解析、安装或自动加载,纯属元数据,填不填、怎么填完全不影响项目运行——但它是你留给协作者和未来自己的第一行注释。
composer.json 里 authors 是什么结构
它是一个数组,每个元素是包含 name(必填)、email(可选)、homepage(可选)、role(可选)的关联数组。不是字符串,不是单个对象,必须是数组套对象。
常见错误:写成 "authors": "John Doe" 或 "authors": {"name": "John"} —— 这两种都会让 composer validate 报错:authors must be an array。
正确写法示例:
"authors": [
{
"name": "Jane Smith",
"email": "jane@example.com",
"homepage": "https://janesmith.dev",
"role": "lead developer"
},
{
"name": "Team Ops",
"email": "ops@company.com"
}
]
什么时候该填、填谁
如果你是包作者(即发布到 Packagist 的库),authors 是推荐字段,帮助用户快速识别维护者;如果是私有项目或仅作本地开发,可填可不填,但建议至少填主开发者姓名。
注意以下几点:
- 多个作者按实际贡献顺序或字母序排列,Composer 不排序也不校验重复
- 团队邮箱(如
dev@org.tld)比个人邮箱更利于长期维护,避免绑定离职人员 -
role值无规范约束,填"maintainer"、"contributor"或空字符串都合法,但不要填模糊词如"helped" - 不要把公司名塞进
name字段(如"Acme Inc."),那是support或homepage的事
composer validate 会检查哪些 author 规则
运行 composer validate 时,它只做基础 JSON 结构与字段类型校验,不联网、不查邮箱格式、不验证域名是否存在。
它会报错的情况包括:
-
authors缺失且type是library(警告,非错误) -
authors存在但不是数组类型 - 某个 author 对象里缺
name字段 -
name值为空字符串或纯空白符(如"name": " ")
不会报错的情况:
-
email格式明显错误(如"foo@bar") -
homepage是无效 URL(如"htp:/bad") - 同名不同邮箱重复出现多次
真正容易被忽略的是:这个字段在 composer show vendor/package 输出里默认不显示,得加 -s(--show-config)才看得到——所以别指望靠它“自动曝光”,它只在 composer.json 源文件和 Packagist 页面上起作用。


















