Composer 不自动生成 LICENSE 文件,需手动创建并确保与 composer.json 的 license 字段一致;推荐用 npx license-generator 生成或从 choosealicense.com 复制标准文本保存为 LICENSE(无后缀、首字母大写);私有项目也应提供;多许可证须明确 OR/AND 关系;CI/CD 中需校验文件存在及内容匹配 SPDX 规范。

Composer 不会自动生成 LICENSE 文件,也不会读取或校验 这个字段只用于 Packagist 展示、依赖筛选和部分扫描工具的初步过滤。它不参与安装、加载或法律效力判定。 别手敲,也别从 Word 或网页直接复制——全角空格、中文引号、自动换行都会让 FOSS 扫描器识别失败。 很多团队在自动化流程里只改了 最常被忽略的一点:SPDX 标识符大小写敏感且连字符不可省略,composer.json 中的 license 字段来生成它——你必须手动提供一个合规的 LICENSE(无后缀)或 LICENSE.md</code)文件,否则法律授权不成立,合规工具会报错。</strong></p>
<H3>composer.json 的 <code>license
字段只是元数据,不是许可证本身
license 必须写在 composer.json 根级,值为字符串(如 "mit")或字符串数组(如 ["mit", "apache-2.0"])"MIT License"、"https://..." 或带空格的 "mit ")会导致 composer validate 报错,Packagist 显示 unknown
license 填对了,没放真实 LICENSE 文件 → 法务上等于“未授权”,企业合规流程可能直接拒收怎么快速生成合规的 LICENSE 文件
curl 下载 SPDX 官方原文:curl -sL https://raw.githubusercontent.com/spdx/license-list-data/master/text/MIT.txt > LICENSE
npx 自动注入信息(需 Node.js):npx license-generator mit --fullname "Your Name" --year "2026" --output LICENSE
LICENSE(注意:不是 LICENSE.txt,也不是 license 小写)**echo -e "Copyright (c) 2026 Your Name.\nAll rights reserved.\n\nProprietary." > LICENSE
多许可证、自定义协议和 CI/CD 容易踩的坑
composer.json,却忘了同步更新 LICENSE 文件,导致扫描工具报“许可证冲突”。
"license": ["mit", "apache-2.0"])必须在 LICENSE 文件中明确说明是“OR”还是“AND”关系,不能只贴一份 MIT"proprietary" 却放了 MIT 文本 → license-checker、FOSSA、GitHub Dependabot 都会标为冲突test -f LICENSE && head -n1 LICENSE | grep -q "MIT$"(根据实际协议微调),防止漏提交LICENSE —— 某些 .gitignore 模式会误删它gpl-3.0-only ≠ GPL-3.0,而 LICENSE 文件内容必须与 SPDX 官方文本逐字一致(包括空行和缩进)。工具不会告诉你哪里差了一个空格,只会标“Unknown license”。


















