不能,composer show 默认不显示远程地址;但已安装包可用 composer show -s 查看 source.url,未安装包需调用 Packagist API(如 https://packagist.org/packages/monolog/monolog.json)获取 source.url 字段。

composer show 能查到远程地址吗?不能,但有替代方案
composer show 默认只显示包名、版本、描述和依赖关系,不包含源仓库地址(如 GitHub URL)或 composer.json 中定义的 source 信息。想确认一个包实际从哪拉取、是否是 fork 或私有源,得换命令。
用 composer show -s 查看 source 与 dist 两种来源地址
加 -s(即 --source)参数可强制显示包的原始源信息,包括 type(如 git)、url(远程仓库地址)、reference(commit hash 或 tag):
composer show -s monolog/monolog
输出中你会看到类似:
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
"reference": "4e05978f612b3b80a5025832d62c1586b831e99b"
}
注意:-s 只对已安装的包有效;若包未安装,该命令会报错 Package not installed。
没安装的包怎么查 remote 地址?用 composer config + packagist.org API
对于未安装的包,composer show 无能为力。可行路径有两条:
- 查本地配置:运行
composer config repos.packagist.org.url确认当前 Packagist 镜像地址(比如是否用了阿里云或腾讯镜像),但这只是元数据源,不是包本身的 remote - 直查 Packagist 官方 API:访问
https://packagist.org/packages/,例如/ .json https://packagist.org/packages/monolog/monolog.json,响应体里package.source.url字段就是真实 Git 地址 - 用
curl -s https://packagist.org/packages/monolog/monolog.json | jq '.package.source.url'(需装jq)快速提取
注意:部分包可能没有 source(比如纯 ZIP 分发、或作者未填),此时只能看 dist.url —— 那是预构建压缩包地址,不是可 clone 的仓库。
为什么 vendor 目录里的 .git/config 不一定可信?
很多人习惯进 vendor/ 看 remote.origin.url,但这存在几个陷阱:
- 如果包是通过
dist方式安装("preferred-install": "dist"或启用了--prefer-dist),vendor下根本没.git目录 - 如果项目启用了
composer install --no-dev,某些 dev-only 包不会被安装,自然也查不到 - 若使用了
pathrepository 类型(本地路径映射),.git/config指向的是你本地路径,而非远程地址 - 私有 GitLab/GitHub Enterprise 包,其 URL 可能被 Composer 自动重写为 HTTPS 或 SSH 格式,和原始
composer.json不一致
所以最稳的方式还是以 composer show -s(已安装)或 Packagist API(未安装)为准。










