authors字段必须为对象数组,单人也需写成[{"name":"张三"}];写成"author":{}或字符串均导致validate报错、show为空、Packagist不显示。

作者信息写不对,composer validate 直接报错,composer show 显示为空,Packagist 页面也拿不到——这不是功能失效,是结构没踩准。
authors 字段必须是数组,哪怕只有一个人
很多人手写成 "author": {"name": "张三"} 或 "author": "张三",这都会让 Composer 忽略整个字段。官方 JSON Schema 强制要求 authors 是对象数组,每个元素至少含 name 字符串。
- 正确写法:
"authors": [{"name": "张三", "email": "zhangsan@example.com"}] - 错误写法:
"author": {"name": "张三"}(单数键名 + 对象)、"authors": {"name": "张三"}(数组缺了中括号)、"authors": "张三"(字符串) - Windows 下用记事本编辑容易因编码问题导致
email字段乱码,建议用 VS Code 或 Notepad++ 并保存为 UTF-8 无 BOM
email 和 homepage 填不填?怎么填才不踩坑
email 不是必填项,但几乎所有工具(Packagist、IDE 插件、composer show)都靠它做联系人溯源;homepage 纯属可选,只影响 Packagist 页面展示,不影响命令行行为。
-
email应为真实、可响应的个人邮箱,避免填support@xxx.com这类多人共用地址 -
email值不必校验格式,但 CI 工具可能警告非法格式(如漏掉@或域名),建议写成"email": "user@example.com" -
homepage可填 GitHub 主页、个人博客或团队官网,不要填support或docs——这些字段 Composer 不识别,会被静默忽略
多人作者怎么加?role 字段能乱填吗
多个作者就往数组里追加对象,顺序无关,不需额外标记。但 role 字段虽被 schema 支持,目前没有任何官方工具解析或展示它,填了等于白填。
- 合法多人写法:
"authors": [{"name": "Alice"}, {"name": "Bob", "email": "bob@example.org"}] - 别把
role当责任划分字段,填"role": "Maintainer"不会改变权限或触发任何逻辑 - 别用逗号拼字符串:
"authors": [{"name": "Alice, Bob"}]是错的,这算一个作者,名字里带逗号
改完为什么 composer show 还是空?三个地方必须查
composer show vendor/package 看不到作者,大概率不是命令问题,而是元数据源头没写对,或同步没到位。
- 检查本地
composer.json根层级是否存在authors数组(不是author单数,也不是contributors) - 确认数组每个对象都有
name字段,且值不是空字符串或纯空格("name": ""或"name": " "都无效) - 如果在 Packagist 上看不到,说明你没
git push --tags,或者打的是旧 tag——Packagist 只读取你推送的那个 commit 对应的composer.json
最常被忽略的一点:改完 composer.json 后,必须运行 composer validate 才能确认结构合法;否则后续 install 或 dump-autoload 可能中断,而错误提示未必直接指向 authors 字段。











