composer怎么查看某个包版本_composer怎么确认插件号【手册】

2次阅读

运行 composer show vendor/package-name 可直接查看已安装包的当前版本,如 composer show monolog/monolog 输出中 versions 行所示,可能是 v3.5.0、dev-main 或带 commit hash 的开发版。

composer怎么查看某个包版本_composer怎么确认插件号【手册】

直接查已安装包的当前版本

运行 composer show vendor/package-name 就能立刻看到这个包在你项目里装的是哪个版本,比如 composer show monolog/monolog 输出里的 versions 行就是实际生效的版本(可能是 v3.5.0dev-main 或带 commit hash 的开发版)。

常见错误现象:

  • 写错大小写或漏掉 vendor/ 前缀,比如输成 Monolog/Monologmonolog → 报错 Package not found
  • 包只在 require-dev 里,但你上次是用 composer install --no-dev 装的 → composer show 查不到它
  • 刚改了 composer.json 但没 composer installupdate → 显示的仍是旧版本

查远程所有可用版本(含最新 tag)

composer show --all vendor/package-name 才能拉取 Packagist 或你配置的私有源上的全部版本列表,包括 2.9.0v3.0.0-rc1dev-main 这类。

为什么有时查不到新版本?不是命令错了,而是:

  • 本地缓存过期:执行 composer clear-cache 再试,或加 --no-cache 强制直连(如 composer show --all monolog/monolog --no-cache
  • 包名不对或源没配:私有 git 包必须在 composer.jsonrepositories 里声明,并确保 composer update --no-scripts 刷新过元数据
  • 没打正式 tag:只有 dev-main 不代表“没版本”,只是作者还没发 v3.x 这样的 release

只看稳定版(过滤掉 dev / alpha / beta)

如果你只想升到靠谱的正式版,--all 默认会把所有分支和预发布版都列出来,得自己筛。最稳的方式是用 JSON + jq

composer show --all monolog/monolog --format=json | jq -r '.versions | keys[] | select(test("^d+.d+.d+$"))'

这行命令只输出形如 3.5.02.10.2 这种三位数字格式的版本号。没有 jq 的话,也可以用 grep 粗筛:

  • composer show --all monolog/monolog | grep -E '^[0-9]+.[0-9]+.[0-9]+' | tr -d ' '
  • 注意:有些包用 x.y 两位格式(如 laravel/framework10.x),这种正则会漏,得手动确认

查特定版本的兼容性(PHP/扩展/依赖)

想确认某个版本能不能在你环境跑,别光看版本号,要查它的元数据:

  • composer show monolog/monolog 2.9.0 → 显示该版本要求的 PHP 版本、ext-json 是否必需、依赖哪些其他包及其约束
  • 如果 composer.json 里写了 "platform": {"php": "8.1"},而某版本 require "php": "^8.2",那它压根不会出现在 --all 结果里 —— Composer 会在本地做一次兼容性预筛
  • -s 可看 autoload 映射:composer show -s monolog/monolog 能快速验证类路径是否对得上,避免 class not found

真正容易被忽略的是缓存和平台约束:很多人反复试 --all 都看不到新版本,第一反应是命令失效,其实只是 ~/.composer/cache/repo/https---packagist.org/ 里那份索引文件太老了;还有人以为装上了就能用,结果 runtime 报 PHP 版本不满足——那是因为没用 composer show vendor/package version 看过具体 require 字段。

text=ZqhQzanResources