composer怎么查看包的time字段_composer包发布时间追踪【时效】

1次阅读

packagist 包的 time 字段是作者在 composer.jsongit tag 中声明的发布时间,并非安装时间,不可靠;应通过官网“last update”或 api 查询,且不能单凭 time 判断包是否过期。

composer怎么查看包的time字段_composer包发布时间追踪【时效】

Composer 包的 time 字段不是安装时记录的本地时间,而是包在 Packagist 上注册时由其元数据(composer.json 中的 time)或 Packagist API 返回的发布时间 —— 它不可靠,也不反映你实际安装/更新的时间。

怎么看 Packagist 上包的发布时间?

Packagist 官网页面(如 https://packagist.org/packages/vlucas/phpdotenv)右上角显示的 “Last update” 是最直观来源,但它其实是该包最新版本的 time 值,来自其 composer.jsongithub/gitlab 的 tag 时间。这个字段由包作者维护,可能被手动修改、填错,甚至留空(此时 Packagist 会 fallback 到 Git tag 的提交时间)。

实操建议:

  • 打开 https://packagist.org/packages/{vendor}/{package},直接看 “Last update”
  • 用 API 查:运行 curl -s "https://packagist.org/packages/{vendor}/{package}.json" | jq '.package.time'(需安装 jq),注意返回的是最新稳定版的 time
  • 如果包未显式声明 time,Packagist 会从 VCS tag 提取 —— 所以它本质是 Git tag 的 authored date,不是发布动作发生时间

为什么 composer show 不显示 time

composer show 默认只展示已安装包的本地元信息(如 nameversionsource),不请求远程 Packagist 数据,所以不会输出 time。它读的是 vendor/composer/installed.json,而这个文件里压根没存 time 字段。

常见错误现象:

  • 执行 composer show vlucas/phpdotenv --all 仍看不到 time
  • 误以为 composer show --outdated 会附带发布时间,其实只比对版本号

想临时查某个已安装包的发布时间,只能回源:去 Packagist 页面或调 API,别指望本地命令。

如何判断一个包是否“过期”?别只看 time

单看 time 容易误判。比如一个包三年没发新 time,但仍在维护安全补丁(通过分支更新);另一个包每月都有新 time,却只是自动化 CI 推的无意义版本号 bump。

更有效的做法:

  • 检查 composer show {package} --all 输出里的 source 地址,点进去看 GitHub/GitLab 的最近 commit 和 issues 活跃度
  • composer outdated --direct 看是否落后于稳定版,再结合 Packagist 的 “Latest version” 对比
  • 关注 security-advisories:运行 composer audit(Composer 2.5+)或装 roave/security-advisories,时效性比 time 更关键

自定义脚本抓取多个包的发布时间?小心限流和结构变化

Packagist API 有速率限制(约 10–20 请求/分钟),且响应结构可能随版本微调(例如 .package.time 在 v2 API 中变为 .package.versions.*.time)。直接循环调 API 容易失败。

实操建议:

  • 优先用 composer show + 手动查关键包,别写全量扫描脚本
  • 真要批量查,加 sleep 3 间隔,并捕获 HTTP 429 错误
  • 别解析 HTML 页面 —— Packagist 不承诺前端结构稳定,API 才是唯一正路
  • 注意:私有仓库(如 Satis、private Packagist)的 time 行为可能不同,得查对应服务文档

真正影响项目稳定的,从来不是某个 time 字段的数字,而是你依赖的版本是否还在维护周期内、有没有已知未修复漏洞、CI 是否能正常构建。Packagist 上那个时间戳,最多帮你快速排除明显停更的包 —— 别当真,也别太信。

text=ZqhQzanResources