composer list 不支持 --format=xml,运行会报错;唯一结构化输出方式是 composer list --raw,它以纯文本 tsv 格式输出已激活命令,适合脚本解析并转为 xml。

Composer list 命令本身不支持 --format=xml
直接运行 composer list --format=xml 会报错:Unrecognized option: --format。因为 list 是 Symfony Console 内置命令,而 --format 是 Composer 自定义命令(如 show、outdated)才支持的参数,并未透传给 list。想用 XML 输出命令列表,得换思路。
用 composer list --raw 配合外部工具生成 XML
--raw 是 list 唯一能结构化输出的隐藏参数:它禁用颜色、缩进和分组,每行一个命令,格式为 command:name description,适合脚本解析。
- Linux/macOS 下可用
awk+printf快速转成简易 XML:
composer list --raw | awk -F' ' '{cmd=$1; sub(/^[^:]*:/, "", cmd); print "<command name='\""' alias='\""' cmd>" $0 "</command>"}' | sed '1s/^/<commands>/' | sed '$s/$//'</commands>
--raw 输出,过滤空行和注释行,再构造带命名空间的 XML(比如含 <version></version> 和 <description></description> 子节点);--raw 不输出全局命令(如 create-project),只输出当前项目加载的命令(含插件注册的),这点和监控意图强相关——你真正要纳管的,就是实际生效的命令集。为什么不用 composer show --format=xml 替代?
composer show --format=xml 输出的是已安装包信息,不是命令列表。两者语义完全不同:list 对应 CLI 可操作能力面,show 对应依赖资产面。看板监控若需联动「某命令是否可用」「某插件是否注册成功」,必须基于 list --raw 的实时结果,而非静态包元数据。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
show的 XML 包含<package></package>节点,但无<command></command>节点; - 插件(如
hirak/prestissimo)可能注册新命令却不发布新包,show完全感知不到; -
list --raw在 CI 环境中执行时,能真实反映当前composer.json+vendor/+ 插件加载后的终态命令集合。
监控集成时容易漏掉的执行上下文
XML 输出只是第一步,真正接入看板(如 Grafana + Prometheus Pushgateway)时,关键在执行一致性:
- 必须固定 Composer 版本(
composer --version),不同大版本(2.2 vs 2.5)的--raw行为微调过,比如对别名的处理; - 需在项目根目录下执行,否则
list不加载本地插件,导致 XML 缺失自定义命令; - 如果用 Docker 运行,确保镜像内
COMPOSER_HOME没缓存旧插件配置,否则--raw可能列出已卸载但未清理的命令; - 别把
list --raw当作一次快照——它不包含命令参数结构,无法校验--no-interaction是否被支持,这类细节得靠composer help <command></command>单独抓取。
命令列表的 XML 化本质是把动态 CLI 能力转为可比对的文本快照,但它的脆弱性藏在执行环境里,不在格式本身。










