composer如何查看某个包的详细更新记录_composer show –outdated详解【方法】

19次阅读

composer show –outdated 仅输出包名、当前已安装版本、最新稳定版本三列信息,不显示 changelog、commit history 或版本差异;需结合 gitHub API、git log/diff 或项目文档手动核查更新详情。

composer如何查看某个包的详细更新记录_composer show –outdated详解【方法】

composer show –outdated 不会显示更新记录(changelog、commit history 或版本间差异),它只列出过期包及其当前/最新可用版本号 —— 想看“详细更新记录”,必须配合其他命令或外部工具

composer show –outdated 输出内容到底包含什么

该命令本质是比对 composer.lock 中记录的已安装版本与 Packagist 上当前稳定分支(通常是 stable)的最新版,输出三列:

  • 包名(vendor/package
  • 当前已安装版本(来自 composer.lock
  • 可升级到的最新稳定版本(不含 RC/beta/dev 分支)

它不显示:

  • 版本之间新增了哪些功能
  • 是否含破坏性变更(BC break
  • 某次更新修复了哪个 issue
  • 提交日志或 tag 注释

想看某个包的真实更新记录,得用这些组合方式

以查看 monolog/monolog 的更新细节为例:

  • 先用 composer show monolog/monolog 确认其源类型:sourcegit 还是 dist;若为 git,说明本地有克隆副本(需开启 prefer-source
  • github 仓库地址:composer show -s monolog/monolog | grep source,拿到 URL 后手动访问 https://github.com/Seldaek/monolog/releases
  • 或直接用 CLI 工具git -C vendor/monolog/monolog log --oneline v2.8.0..v2.9.0(需已用 prefer-source 安装,且知道两个版本号)
  • 更通用的做法:用 composer outdated --format=json 解析后,调用 GitHub API 获取 /repos/{owner}/{repo}/compare/{old}...{new}

为什么 –outdated 默认不显示更新日志?

Composer 的定位是依赖管理器,不是 changelog 查阅器。设计上刻意避免网络 I/O 和外部依赖:

  • composer show --outdated 仅读取本地 composer.lock 和缓存的 Packagist 元数据(~/.composer/cache/repo/https---packagist.org/packages.json
  • 不主动请求 GitHub/gitlab API,也不解析 CHANGELOG.mdUPGRADE.md
  • 若启用 --direct,只过滤 root require 的包;加 --all 会显示所有嵌套依赖 —— 但依然没有日志

性能和稳定性优先,所以“更新记录”这件事,得交还给 VCS 平台或项目自身维护的文档。

一个快速验证更新影响的小技巧

在升级前,用以下命令预览变更范围(适合 Git 源安装):

composer update --dry-run monolog/monolog git -C vendor/monolog/monolog diff --stat v2.8.0..v2.9.0

注意:--dry-run 不写入 lock 文件,但会触发 Composer 解析依赖图;而 git diff --stat 能看出改了多少文件、是否有 src/ 外的变动(比如 tests/docs/),这对判断是否含 BC break 很有用。

真正要确认一次升级是否安全,不能只看版本号,得盯住 changelog 链接、BREAKING CHANGES 小节、以及 vendor 目录下实际代码的 diff —— Composer 本身不会替你读完那几页 markdown

text=ZqhQzanResources