composer show -v 可直接列出所有包的 vcs 地址,加 --no-dev 仅显示生产依赖,source 字段为真实 git 仓库地址;支持 --format=json 输出结构化数据,旧版本需文本解析。

composer show 命令能直接列出所有包的 VCS 地址
不需要额外插件或解析 composer.lock,composer show 本身支持输出每个依赖包的源码托管信息。关键在于加 -v(verbose)参数——它会把 source 字段(通常是 Git URL)一并打印出来。
执行:
composer show -v你会看到类似这样的输出片段:
monolog/monolog ... source: https://github.com/Seldaek/monolog.git dist: https://api.github.com/repos/Seldaek/monolog/zipball/...
注意:source 字段才是你想要的托管地址;dist 是归档下载地址,不是 Git 仓库地址。
批量提取 GitHub/GitLab 等地址时别漏掉 --no-dev
如果你只关心生产环境依赖(即 require 中的包),必须加上 --no-dev,否则 composer show -v 会混入 require-dev 的包(比如 PHPUnit、phpstan),导致结果冗余甚至误判。
常用组合命令:
composer show -v --no-dev | grep "source:"或更精准地过滤出非空 source 行:
composer show -v --no-dev | awk '/^ source:/ {print $3}'
- 有些包没有
source字段(比如纯 ZIP 分发、PECL 扩展或本地路径包),grep "source:"自动跳过它们 -
awk提取第三列是为适配多数 Composer 版本的缩进格式;若发现字段偏移,可改用sed -n 's/^ source: \(.*\)/\1/p'
遇到 private repository 或 SSH URL 时要确认权限
如果项目用了私有 Packagist 或自建 Satis,composer show -v 显示的 source 可能是 git@xxx:repo.git 这类 SSH 地址。此时你得确保当前系统已配置对应 SSH key 并能 git ls-remote 成功,否则后续 clone 会失败。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
常见卡点:
-
source显示https://...但实际需 token 认证 → 检查auth.json是否配置了该域名的token或http-basic - 显示
git@...却提示Permission denied (publickey)→ 运行ssh -T git@your-host验证连接 - 某些镜像源(如阿里云 PHP 镜像)会重写
dist,但不改source→source仍指向原始 GitHub,不受镜像影响
想导出为 JSON 或 CSV?别手写解析,用 composer show --format=json
composer show 支持原生 JSON 输出,比文本解析更可靠:
composer show --format=json --no-dev
结果里每个包对象含 source.url 字段,例如:
"source": {"type": "git", "url": "https://github.com/doctrine/inflector.git", "reference": "..."}你可以用 jq 快速提取:composer show --format=json --no-dev | jq -r '.[] | select(.source.url) | "\(.name) \(.source.url)"'
注意:--format=json 在 Composer 2.2+ 才稳定支持;旧版本(如 1.x)会报错,此时只能回退到文本解析方式。
真正麻烦的是那些没填 source 的包——它们可能来自 ZIP 归档、本地路径或 ZIP 包,压根没有托管地址。这类包在结果里直接消失,不是工具问题,是上游元数据缺失。










