不能。composer show 默认只显示包名、版本、描述和依赖,不包含作者和发布日期;需用 composer show -f json 获取 JSON 数据中的 authors 和 time 字段,或调用 Packagist API。

composer show 能否直接显示包的发布日期和作者
不能。默认的 composer show 命令只输出包名、版本、描述和依赖关系,不包含 authors 字段或 time(即发布日期)字段。这是 Packagist API 返回数据的精简展示逻辑决定的,不是命令遗漏。
如何查到某个包的作者和发布时间
必须借助 Packagist 官方 API 或 Composer 的 JSON 输出能力,绕过默认文本格式限制:
- 用
composer show -f json vendor/package获取结构化数据,其中time是发布日期(ISO 8601 格式),authors是作者数组 - 若该包未在本地安装,可直接请求 Packagist API:
curl https://packagist.org/packages/vendor/package.json,响应体中含完整元信息 -
composer show不支持自定义字段输出,也无插件机制扩展字段,别指望加参数就能“显示作者”
composer show -f json monolog/monolog | jq '.time, .authors'
为什么 composer show 显示的版本号有时和 packagist.org 上看到的不一致
因为 composer show 默认只列出当前项目 已安装 的版本,而 Packagist 页面展示的是该包所有可用版本(包括未被当前 composer.json 允许的版本)。更关键的是:Composer 会缓存 Packagist 元数据,本地缓存可能过期。
- 运行
composer update --dry-run可预览可用更新,但不修改 lock 文件 - 强制刷新缓存用
composer clear-cache,再执行composer show -f json才能拿到最新time - 某些包使用
dev-分支别名(如dev-main as 2.0.x-dev),composer show显示的是别名,不是真实 commit 时间
批量查多个包的发布日期和作者是否可行
可以,但需脚本辅助。Composer 本身不支持通配符或批量 JSON 查询,只能逐个调用:
- 从
composer.lock中提取所有已安装包名:jq -r '.packages[].name' composer.lock - 对每个包执行
composer show -f json $pkg 2>/dev/null | jq -r '"\(.name) \(.time) \(.authors[0].name // \"N/A\")"' - 注意错误处理:私有包、被移除的包、或网络不可达时会报错,建议加
2>/dev/null过滤
真正容易被忽略的点是:Packagist 的 time 字段记录的是 该版本首次提交到 Packagist 的时间,不是 GitHub tag 创建时间,也不是源码仓库的 commit 时间——两者可能差数小时甚至数天。










