Composer作者信息必须写在composer.json的authors数组中,单人也要用数组格式,含name、email(需真实绑定账户)、homepage和role字段,修改后须发新版本tag才能生效。

Composer 项目作者信息不写在 composer.json 里,就等于没写 —— 开源社区只认这个文件里的 authors 字段,其他地方(如 README、LICENSE 或 Git 提交作者)都不算数。
作者字段必须用 authors 数组,不能用 author
很多人误以为单个作者可以写 "author": { "name": "xxx" },但 Composer 官方只识别复数形式的 authors,且必须是数组。写错会导致 Packagist 解析失败、贡献者信息不显示、甚至影响某些自动化工具(如 GitHub Dependabot 的贡献归属)。
-
authors是强制要求的数组,哪怕只有一个人也要写成数组 - 每个作者对象至少包含
name,推荐补全email和homepage -
role字段可选,常见值有"lead"、"maintainer"、"contributor",会影响 Packagist 页面的展示权重
{
"authors": [
{
"name": "Zhang San",
"email": "zhang@example.com",
"homepage": "https://zhang.dev",
"role": "lead"
},
{
"name": "Li Si",
"email": "li@example.org",
"role": "maintainer"
}
]
}
邮箱地址要真实可用,且与 Packagist/GitHub 账户绑定
Packagist 在同步包时会校验 email 是否匹配其账户注册邮箱;GitHub 的“Used by”和贡献图也依赖该字段关联。用占位邮箱(如 hello@localhost)或拼错邮箱,会导致作者页空白、无法接收安全通告、丧失维护者权限。
- 不要用
noreply@github.com这类无收信能力的地址 - 如果不想公开私人邮箱,可用 Git 提交邮箱 + Packagist 绑定邮箱一致的方式绕过(但必须真实存在并能验证)
- 多个作者共用一个邮箱?不行 —— Packagist 按邮箱去重,后写的会被忽略
别把公司名、组织名塞进 name 字段
name 是自然人姓名,不是品牌名。写 "name": "ACME Corp" 会让 Packagist 显示为“ACME Corp (ACME Corp)”,既不符合 PSR-5(PHPDoc 作者规范),也会让社区认为项目缺乏明确责任人。
- 如果是组织主导项目,应在
support或homepage里体现组织信息 - 个人开发者用真名或长期使用的 ID 即可(如
"name": "Jane Doe"或"name": "jane-doe") - 中文名无需拼音化,UTF-8 安全,Packagist 和 GitHub 均支持直接显示
更新作者信息后,必须重新发布新版本才能生效
修改 composer.json 中的 authors 不会自动刷新 Packagist 页面 —— 必须打 tag(如 v1.2.3)并触发 packagist.org 的 webhook 同步,或者手动点击 “Update” 按钮。旧版本的页面仍显示旧作者,这点常被忽略。
- Git tag 名必须符合语义化版本格式(
vX.Y.Z),否则 Packagist 可能跳过同步 - 如果用了私有 Packagist 镜像,需确认镜像是否支持
authors字段透传 - CI/CD 中自动发布时,确保
composer.json修改和 tag 创建在同一次提交中,避免时间差导致信息错位
最常被跳过的环节是:改完 authors 就以为完成了,忘了发版。Packagist 页面上看到的永远是最新已发布版本的元数据,不是 git 主干上的内容。











