composer config --list --global 输出的是用户手动配置过的全局配置项,仅显示显式设置且未被覆盖的键值对,不包含默认值或未配置项。

composer config --list --global 输出的是什么
这条命令列出的是当前 Composer 全局配置文件 composer.json 中的 config 段内容,不是所有可设选项的文档清单,也不是本地项目配置。它只反映你实际写入过、且未被覆盖的全局设置。
常见误判是以为能看到所有默认值或支持的键名——其实不会。Composer 不会把未显式配置的项(哪怕有默认值)列出来。
哪些配置项最常出现在 --global 结果里
真正会被 composer config --list --global 显示出来的,基本只有你手动执行过 composer config --global xxx yyy 的那些项。高频出现的包括:
-
home:全局 vendor 和 cache 路径,默认是~/.composer(旧版)或~/.config/composer(v2+) -
bin-dir:全局 bin 目录,比如vendor/bin的全局映射位置 -
cache-dir、data-dir、home:这三个容易被自定义,一设就出现在列表里 -
github-oauth:如果你登过 GitHub,这里会存 token(但不会明文显示,只标为[hidden])
为什么有些配置没显示,但实际生效了
因为 Composer 配置分三层:命令行参数 > 项目级 composer.json > 全局 composer.json。某项没出现在 --global --list 里,可能是因为:
- 它属于默认值,从未被你修改过(比如
process-timeout默认 300,不设就不会列) - 你用
--local或项目内composer.json设了,那它只影响当前目录 -
环境变量如
COMPOSER_HOME会覆盖home,但不会让home出现在 list 结果中
想确认某项是否被某层覆盖,可用 composer config --all(显示所有层级合并后的结果),或加 --source 查看具体来自哪个文件。
怎么安全地查默认值和所有支持的配置键
Composer 官方不提供“内置配置清单”命令,但有两个可靠途径:
- 查源码里的
src/Composer/Config.php,搜索$defaultConfig数组(v2.5+ 在getDefaultConfig()方法里) - 运行
composer config --help,末尾会列出常用键名(如sort-packages、notify-on-install),但不带说明 - 注意:
cafile、http-basic、platform这类键,即使从不设也合法,但除非你显式配置,否则不会出现在--list --global输出中
别依赖 --list --global 来发现新功能;它只是你的操作日志,不是手册。









