0

0

composer如何查看某个依赖包的详细更新时间_composer show包信息详解【实战】

冰火之心

冰火之心

发布时间:2026-01-30 16:38:57

|

204人浏览过

|

来源于php中文网

原创

Composer 本身不提供包的更新时间,composer show 仅显示静态元信息(如名称、版本、许可证等),不含发布时间;准确获取需调用 Packagist API 的 time 字段。

composer如何查看某个依赖包的详细更新时间_composer show包信息详解【实战】

Composer 本身不记录或暴露包的“更新时间”(比如 packagist.org 上某次版本发布的具体时间戳),composer show 输出里也没有 updated_at 字段。所谓“查看依赖包的详细更新时间”,实际只能间接获取:要么查 Packagist API,要么看该包 Git 仓库的 tag 时间,要么依赖本地 vendor 中的 composer.lock 里记录的安装时间(非发布时间)。

composer show 能看到什么?——字段含义与局限

composer show 是查看已安装包元信息的命令,但它的输出是静态的、基于 composer.lockcomposer.json 的快照,不含时间线数据:

  • name:包名(如 monolog/monolog
  • versions:可用版本列表(来自当前配置源,不是实时远程)
  • type:包类型(library / project 等)
  • license:许可证声明(取自 composer.json
  • source:Git 仓库地址 + 分支(若为 VCS 包)
  • dist:ZIP 包下载地址 + SHA256(若为 dist 包)
  • names:提供(provide)的虚拟包名(如 psr/log-implementation

注意:composer show monolog/monolog 不会显示 “2024-03-15 发布了 v3.5.0” 这类信息 —— 它压根不联网查 Packagist,也不解析 Git tag 时间。

如何查某个包最新版的实际发布时间?——用 Packagist API

Packagist 官方 API 提供了每个版本的 time 字段,即该版本在 Packagist 上注册的时间(通常 ≈ GitHub tag 推送时间)。这是最接近“更新时间”的权威来源:

curl -s "https://packagist.org/packages/monolog/monolog.json" | jq '.package.versions."dev-main".time'

常见操作建议:

AIPAI
AIPAI

AI视频创作智能体

下载
  • 替换 URL 中的 monolog/monolog 为你想查的包名(URL 编码需处理,如 symfony/consolesymfony%2Fconsole
  • jq 提取 .package.versions 下任意版本(如 v3.5.0"dev-main")的 time
  • 若无 jq,可用 Python 快速解析:
    python3 -c "import json, sys; print(json.load(sys.stdin)['package']['versions']['v3.5.0']['time'])" < response.json
  • 注意:API 返回的是 UTC 时间字符串(如 "2024-03-15T12:47:22+00:00"),不是本地时区

为什么不能靠 composer.lock 判断“更新时间”?

composer.lock 里确实有 packages 数组,每个包含 time 字段,但它表示的是你本地执行 composer update 时,Composer 记录该版本被锁定的时间,不是包作者发布的原始时间:

  • 这个 time 是写入 lock 文件那一刻生成的(如 "2024-04-01T10:22:33+00:00"),和远程发布无关
  • 多人协作时,不同人 composer install 后的 lock 文件时间可能不一致
  • 如果包是通过 require 直接指定分支(如 "dev-main"),lock 文件里的 time 可能为空或为 null
  • 想查本地上次更新时间?直接 stat -c %y composer.lock(Linux/macOS)更准

进阶技巧:批量查多个包的发布时间

如果你维护一个项目,想快速知道所有直接依赖的最新版发布时间,可以结合 composer show --direct --no-dev --format=json 和 Packagist API:

composer show --direct --no-dev --format=json | \
  jq -r '.packages[] | "\(.name) \(.version)"' | \
  while read pkg ver; do
    echo "$pkg@$ver: $(curl -s "https://packagist.org/packages/$pkg.json" 2>/dev/null | jq -r ".package.versions[\"$ver\"].time // \"not found\"")"
  done

注意点:

  • 该脚本假设 $ver 在 API 响应中存在对应 key(实际可能带 v 前缀,或为 dev- 分支)
  • 网络请求无并发控制,大量包时建议加 sleep 0.1 避免被限流
  • Packagist 对未认证请求有速率限制(约 10 请求/分钟),生产脚本应加缓存或使用 token

真正需要“更新时间”的场景,几乎都绕不开 Packagist API;而 composer show 的作用,其实是确认当前锁定了哪个版本、从哪来的、有没有冲突别名——它不是审计工具,也不是发布日志查看器。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
PHP Symfony框架
PHP Symfony框架

本专题专注于PHP主流框架Symfony的学习与应用,系统讲解路由与控制器、依赖注入、ORM数据操作、模板引擎、表单与验证、安全认证及API开发等核心内容。通过企业管理系统、内容管理平台与电商后台等实战案例,帮助学员全面掌握Symfony在企业级应用开发中的实践技能。

78

2025.09.11

composer是什么插件
composer是什么插件

Composer是一个PHP的依赖管理工具,它可以帮助开发者在PHP项目中管理和安装依赖的库文件。Composer通过一个中央化的存储库来管理所有的依赖库文件,这个存储库包含了各种可用的依赖库的信息和版本信息。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

154

2023.12.25

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

420

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

536

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

311

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

77

2025.09.10

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

236

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

458

2024.03.01

C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

8

2026.01.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 8.1万人学习

Git 教程
Git 教程

共21课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号