Composer无licenses命令,查License需用composer show或info(二者等价);show支持单包、通配符及--all配合grep/paste或PowerShell提取,但仅限已安装包,且license字段需人工核对实际许可证文本。
Composer 没有内置的 composer licenses 命令,直接运行会报错:Command "licenses" is not defined.。想查已安装包的 License 信息,得用其他方式组合实现。
composer show 查单个包的 License这是最直接、最可靠的方式,适用于确认某个关键依赖是否符合
项目合规要求。
composer show vendor/package-name 会输出该包的完整元数据,其中 license 字段即授权类型(如 MIT、GPL-2.0-or-later)proprietary,需人工核查其 composer.json 或源码仓库composer show monolog/* 可批量查看所有 monolog 相关包composer show --all 导出全部包并过滤 license适合做一次性合规扫描,但输出冗长,需配合 shell 工具提取关键字段。
composer show --all | grep -E '^(name|license):' | sed 's/^name: //; s/^license: //; /^$/d' | paste -d' → ' - -
composer show --all | Select-String -Pattern "name:|license:" | ForEach-Object { $_.Line.Trim() } | % { if ($_ -match 'name: (.+)') { $n=$matches[1] } elseif ($_ -match 'license: (.+)') { "$n → $matches[1]" } }--all 包含 require-dev 里的包,生产环境部署前建议加 --no-dev
composer info 替代 show?composer info 是 composer show 的别名,行为完全一致,无额外功能。不要误以为它能“智能汇总 license”——它只是更短的写法。
vendor/ 中已安装的包,不查 lock 文件里未安装的条目vendor/ 被清理过,必须先 composer install 才能查到 licenseLicense 信息本质来自每个包的 composer.json 中的 license 字段,Composer 不做校验也不自动解析 SPDX 含义。真正影响法律风险的是实际代码中声明的许可证文本(如 LICENSE 文件),而非 composer.json 里那一行字符串。