composer config --list 输出当前实际生效的全部配置项,合并自项目composer.json的config字段、全局config.json及环境变量,本地优先级最高,环境变量可覆盖文件设置。

composer config --list 能看到什么?
运行 composer config --list 会输出 Composer 当前**实际生效的全部配置项**,不是“有哪些可配”,而是“此刻用的是哪些值”。它自动合并了三处来源:项目根目录 composer.json 中的 config 字段、全局配置文件(通常是 ~/.composer/config.json 或 %APPDATA%/Composer/config.json)、以及环境变量(如 COMPOSER_CACHE_DIR)。本地配置优先级最高,环境变量能覆盖文件设置——这点常被忽略,导致你改了 config.json 却没生效。
怎么区分本地 vs 全局配置?
直接在项目目录下执行 composer config --list,看到的是合并后的最终结果;加 --global 参数则只读全局配置文件,完全不受当前项目影响:
-
composer config --list→ 查看当前项目最终生效配置(含本地 + 全局 + 环境变量) -
composer config --list --global→ 只看全局配置文件内容 -
composer config cache-dir→ 单独查某个键的值(本地优先) -
composer config --global cache-dir→ 强制查全局的cache-dir值
为什么有时看到的值和预期不符?
常见原因有三个:
- 环境变量偷偷覆盖了配置文件:比如设置了
COMPOSER_HOME,那cache-dir、data-dir等路径会自动基于它推导,--list显示的是推导后的真实路径,不是原始配置值 - 某些字段(如
github-protocols)是运行时动态计算的,--list不会体现其原始配置,只显示最终结果 - 插件可能修改配置:加
--no-plugins可排除干扰,确认是否是插件注入导致的异常值
排查时建议先跑 composer config --list --verbose(部分版本支持),它可能标注配置来源;再配合 env | grep COMPOSER 检查环境变量。
怎么快速验证镜像源是否生效?
国内用户最常配的是 packagist 镜像,但改完容易不确定有没有起作用。直接查 repositories.packagist.org.url 这个键最准:
composer config repositories.packagist.org.url
如果返回 https://mirrors.aliyun.com/composer/ 就对了;如果还是 https://packagist.org,说明没配成功或被更高优先级覆盖。注意:旧版命令 repo.packagist 已不推荐,新格式统一用 repositories.packagist.org。
真正容易卡住的地方,往往不是命令不会用,而是环境变量和插件在后台悄悄改了配置——--list 看到的是“结果”,不是“操作日志”,得靠组合参数一层层剥开。










