composer show --self 仅显示当前项目 composer.json 定义的 root package 元数据,如 name、description、require 等,不显示 version、实际安装版本、插件或脚本配置。
它不显示已安装依赖的详情,只聚焦于 composer.json 中定义的本项目自身(即 root package)的元数据。这个命令本质是读取当前项目 composer.json 的内容并格式化输出,不是运行时状态快照。
常见可显示项包括:name、description、type、license、authors、require 和 require-dev(仅列出约束,不含已安装版本)、autoload 配置等。但以下内容不会出现:
version 字段:即使写了也不会显示 —— Composer 认为 root package 没有“固定版本”,除非你用 composer install --no-dev + composer.lock 锁定,否则它默认是 dev-main 或类似占位符composer show(不带 --self)或 composer list 的职责scripts):这些字段被忽略,不参与输出两者输出几乎一致,因为 composer info 是 composer show 的别名。但注意:composer show --self 在 Composer 2.2+ 中更稳定;旧版本中若项目未初始化(无 composer.json),它会报错 Could not find package with name "self",而不是静默失败。
composer show --self name : myapp/api-service descrip. : Internal REST API for user management type : project license : MITauthors : John Doe
require : php: ^8.1, guzzlehttp/guzzle: ^7.5 autoload : psr-4: {"App\\": "src/"}
别依赖 --self。直接运行:
composer show:列出所有已安装依赖及其版本composer show -t:加树形结构,看清依赖层级composer show myapp/api-service(显式指定 name):此时才可能看到解析出的 version(来自 composer.lock 的 packages 段落),但前提是 lock 文件存在且该 package 被当作依赖记录了 —— 这种用法非常规,容易误判root package 的“真实版本”本质上由 Git tag、VCS 分支或 composer.lock 中的 packages-dev 条目间接体现,show --self 不负责揭示这点。