composer init 不支持 --author 参数,因其设计为交互式向导,源码中未定义该选项;可通过预写 composer.json、初始化后编辑或手写文件三种方式设置作者信息。

composer init 本身不支持 --author 参数,直接运行 composer init --author "name 会报错:Unrecognized option: --author。作者信息必须在交互式流程中输入,或通过预填充 composer.json 手动设置。
为什么 composer init 没有 --author 选项
Composer 的 init 命令设计为交互式向导,所有字段(包括 name、description、author、type 等)默认需人工确认。它不提供批量跳过或预设 author 的 CLI 标志 —— 这是官方有意为之的限制,不是遗漏。
- 源码层面,
InitCommand类未定义--author作为可接受选项 - 即使使用
-n(non-interactive)模式,也只跳过全部提问,不会自动填入 author - 试图用
--传参或环境变量覆盖均无效
真正能快速设置 author 的三种实操方式
绕过交互,直接落定作者信息,核心思路是:避免走 init 流程,改用生成或编辑 composer.json。
-
方式一:用
echo+composer init -n预写入(推荐)
先手动创建最小composer.json,再让init -n读取并补全其他字段:echo '{"name": "vendor/package", "description": "A demo package", "authors": [{"name": "Your Name", "email": "you@example.com"}]}' > composer.json composer init -n注意:-n不会覆盖已有字段,只补空缺项(如type、license),authors已存在则完全保留 -
方式二:直接
composer init后立刻修改 JSON
运行composer init,在 author 提示处直接回车跳过(留空),初始化完成后立即编辑:composer init # 在 author 步骤按 Enter(此时 authors 字段为空数组或缺失) sed -i 's/"authors": \[\]/"authors": \[{"name": "Your Name", "email": "you@example.com"}\]/' composer.jsonWindows 用户请用 PowerShell 或手动编辑 -
方式三:跳过 init,手写基础 composer.json(最轻量)
对熟悉结构的人最快:{ "name": "vendor/package", "description": "My package", "type": "library", "authors": [ { "name": "Your Name", "email": "you@example.com" } ], "require": {} }保存后即可直接运行composer install
作者字段格式和常见坑
authors 是数组,哪怕只有一人也必须用 [{...}],写成对象 {...} 或字符串都会导致 composer validate 失败。
- 字段名必须是
name和email(homepage、role可选,但非标准字段可能被某些工具忽略) - 邮箱不校验格式,但建议用真实可联系地址,否则 Packagist 审核可能质疑维护者真实性
- 如果项目已提交到 Packagist,修改
composer.json中的 author 不会自动同步到平台页面 —— 那里显示的是首次提交时抓取的信息,需在 Packagist 后台手动更新 - CI/CD 场景下慎用
echo方式:若name含斜杠(如acme/my-pkg),需确保 shell 能正确解析 JSON 引号嵌套
真正省时间的点不在“加个参数”,而在于接受 composer init 的交互本质,转而用更可控的方式构造 composer.json —— 尤其当你要批量初始化多个包时,手写模板或脚本生成比反复敲交互提示快得多。










