composer show --licenses 在 composer 2.5+ 中原生可用,输出所有已安装包的 license 字段值(如 mit、bsd-3-clause),但仅读取 composer.json 声明、不解析 license 文件、不验证规范性,且需先执行 composer install;旧版本不支持该命令,须用 composer.lock 解析或第三方插件补全。

Composer 本身不直接提供“一键列出所有依赖许可证”的命令,但可以通过组合内置功能和第三方工具快速实现,最可靠的方式是使用 composer show --licenses(Composer 2.5+)或配合 composer licenses 插件。
composer show --licenses 是否可用取决于 Composer 版本
该命令在 Composer 2.5.0 及以上版本原生支持;低于此版本会报错 Command "show --licenses" is not defined。
- 检查当前版本:
composer --version - 若为 2.5+,直接运行:
composer show --licenses,输出按包名分组,含license字段值(如MIT、BSD-3-Clause、proprietary) - 注意:它只读取
composer.json中声明的license字段,不解析 LICENSE 文件内容,也不验证字段是否规范(例如Apache-2.0和Apache 2.0被视为不同字符串)
用 composer-licenses 插件补全旧版本或增强可读性
该插件(dealerdirect/composer-plugin-installers-extender 不相关,应选 bmitch/changelog?错——正确插件是 composer-licenses,由 thecodingmachine/composer-licenses 维护)能生成 HTML/CSV 报告,并尝试标准化 license 名称。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 全局安装:
composer global require thecodingmachine/composer-licenses - 项目内执行:
composer licenses(自动识别当前项目) - 输出默认为表格,加
--format=html可生成带 SPDX 链接的报告,对审计更友好 - 它会跳过未声明 license 的包(显示
unknown),也**不会**递归检查 dev-dependencies,除非显式加--dev
license 字段值不等于法律效力,需人工核验
Composer 的 license 字段只是元数据提示,常见陷阱包括:
- 包作者填了
MIT,但实际代码里 LICENSE 文件是 GPL-2.0 —— 以 LICENSE 文件为准 -
license值为proprietary或unlicensed,意味着不可商用或无授权,不能忽略 - 某些包(如
monolog/monolog)在composer.json写MIT,但其v2.x分支可能含 LGPL 组件,需查具体 tag 的 LICENSE - 子依赖(transitive dependency)的 license 不会自动继承显示,
composer show --tree可辅助定位,但 license 仍需逐个查
真正要用于合规交付时,不能只信 composer show --licenses 输出,得结合 vendor/ 下每个包的 LICENSE 文件手动抽检,尤其当项目涉及金融、医疗等强监管场景。










