license必须为spdx标准字符串或数组(如"mit"、["mit","apache-2.0"]),authors必须为含name字段的对象数组,email和homepage可选;二者均影响packagist展示、企业合规扫描及信任链,但不参与依赖解析或自动加载。

composer.json 里 license 和 authors 字段怎么填
license 和 authors 是 composer.json 中影响 Packagist 展示、企业合规扫描和依赖信任链的关键字段,不是可有可无的占位符。
常见错误现象:composer validate 不报错,但提交到 packagist.org 被拒,或 CI 流程因缺失 license 直接中断;composer show vendor/package 输出中作者为空,导致贡献归属模糊。
-
license必须是字符串或字符串数组,如"MIT"、["MIT", "Apache-2.0"];写成"license": "mit"(小写)或"license": "MIT License"(带后缀)会被部分工具识别为无效 -
authors是对象数组,每个对象必须含name字段,email和homepage可选;不要写成单个对象或字符串 - 多个作者按实际贡献顺序排列,Packagist 仅显示第一个;若用组织邮箱(如
oss@company.com),确保该邮箱能接收 Packagist 的验证邮件
为什么 packagist 拒绝我的包?检查 license 格式和 authors 结构
Packagist 在入库时会做严格校验:license 值必须在 SPDX 许可列表 中(如 GPL-3.0-only ✅,GPL v3 ❌);authors 若结构非法(比如缺 name 或类型为字符串),整个包元数据解析失败。
实操建议:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 运行
composer validate --strict,它比默认validate多检查license是否 SPDX 标准、authors是否为数组 - 用
composer show --all确认当前项目解析出的 author 名字是否与预期一致(注意空格、全角字符等隐形问题) - 如果用 GitHub Actions 自动发布,确保 workflow 中调用的是
composer config --no-interaction类命令,而非交互式init—— 后者可能跳过 license 提示
作者信息没生效?排查全局配置干扰和缓存残留
composer init 默认读取全局 name/email,但如果你之前用 composer config -g name "xxx" 设过全局作者,而当前项目 composer.json 里又没显式写 authors,Packagist 仍可能抓取全局值——这违反开源协作惯例,且无法体现真实贡献者。
关键点:
- 全局配置只影响
init时的默认填充,不参与 Packagist 元数据生成;最终以composer.json中的authors数组为准 - 改过
authors后,运行composer clear-cache,否则show或 Packagist webhook 可能返回旧缓存 - 检查是否有
.gitattributes或 CI 脚本在构建前自动注入作者字段(尤其企业私有模板),这类覆盖行为不易察觉
license 字段会影响自动加载和依赖解析吗?
不会。license 和 authors 都属于元数据字段,不参与依赖解析、版本约束计算或 PSR-4 自动加载路径映射。但它们直接影响下游使用方的信任决策——比如金融类项目 CI 会用 composer audit 扫描所有 require 包的 license 是否在白名单内,一个缺失或拼错的 license 可能导致整条流水线卡住。
容易被忽略的地方:当包被 fork 或作为子模块嵌入大项目时,父项目的 license 检查工具(如 FOSSA、Snyk)默认只读取根 composer.json,不会递归进 vendor/ 下每个包的文件。所以你必须确保每个独立发布的包都带正确、自洽的 license 字段,不能指望“上游已声明”。










