composer show -s vendor/package-name 能准确获取 git 仓库地址,因其专为暴露源信息设计,输出包含 source.url、source.type 和 source.reference;未安装则报错,纯 dist 包 source 为空,此时应查 dist.url 或 packagist api。

直接用 composer show -s vendor/package-name 就能拿到 Git 仓库地址;别用 composer info 或不加参数的 composer show,它们根本不显示 source 字段。
为什么 composer show -s 是最稳的选择
这个命令专为暴露源信息设计,输出里会明确包含 source.url(Git 地址)、source.type(如 git)、source.reference(commit 或 tag)。它不依赖你是否开了 verbose 模式,也不混淆 dist 和 source —— 而 composer show -v 虽然也能看到 source,但输出混杂,容易漏看或误读。
-
-s是--source的缩写,不是“show”,也不是“summary”,别被名字误导 - 必须确保包已安装,否则报错
Package not installed,不是命令写错了 - 如果输出中
source是空对象或缺失,说明该包是纯 dist 分发(比如只提供 zip),此时要转查dist.url
composer show -p 显示的是下载来源,不是 Git 仓库
-p(即 --platform)实际输出的是 Composer 解析出的“源位置”,但它不区分 source 和 dist:对 Git 包,它显示 source.url;对 ZIP 包,它显示 dist.url。所以当你看到一个 GitHub zipball 链接时,别以为那是可 clone 的仓库——那只是归档快照。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 例如:
https://api.github.com/repos/guzzlehttp/guzzle/zipball/123abc≠https://github.com/guzzlehttp/guzzle.git - 想确认是否走 dist,看
composer show -s输出里source是否为null,或者执行composer config --list | grep "preferred-install" - 私有包若用
path类型 repository 引入,-p会显示本地路径,而非远程地址
镜像源会重写 source.url,得对比 composer.lock
如果你用了阿里云、腾讯或公司内部镜像,composer show -s 返回的 source.url 很可能已被代理替换。真实源头藏在 composer.lock 文件里,且只在 lock 文件生成那一刻固化。
- 打开
composer.lock,搜索目标包名,在对应条目下找source.url字段(不是dist.url) - 再运行
composer config repos.packagist.org.url,看当前镜像地址是否和 lock 里不一致 - 临时验证原始地址:执行
composer config --unset repos.packagist,然后composer update --lock(不重装),再composer show -s
没安装的包怎么查仓库地址
composer show -s 对未安装包无效。这时候只能绕过 Composer,直连 Packagist API:
- 访问
https://packagist.org/packages/<vendor>/<package>.json</package></vendor>,比如https://packagist.org/packages/monolog/monolog.json - 响应体里
package.source.url就是作者填的原始仓库地址(注意:有些包压根没填,字段为空) - 命令行快速提取:
curl -s https://packagist.org/packages/monolog/monolog.json | jq -r '.package.source.url'(需装jq) - 别信
vendor/xxx/.git/config—— dist 安装根本没.git目录;就算有,也可能是 fork 后改过的 remote
真正麻烦的不是找不到地址,而是地址本身不可信:source 可能是镜像、fork、proxy 或者作者随手填错的旧链接。溯源时得交叉比对 composer.lock、Packagist API、composer.json 里的 homepage 和 support.source 字段——这些不会自动进 lock,得手动翻。










