Composer 2.0+ 默认在非 TTY 环境(如 CI/CD、重定向输出)禁用进度条,可通过 composer install --progress 强制启用;全局配置 composer config --global progress true 可持久生效,但终端不支持 ANSI 或宽度不足时仍可能降级为文本模式。

为什么 composer install 不显示进度条了
默认情况下,Composer 从 2.0 开始在非 TTY 环境(比如 CI/CD、重定向输出、某些 IDE 终端)会自动禁用进度条;另外,如果用了 --no-progress 或设置了环境变量 COMPOSER_NO_PROGRESS=1,也会强制关闭。
如何强制启用下载进度条
最直接的办法是加 --progress 参数,它会覆盖掉自动检测逻辑,强制渲染进度条:
composer install --progress
如果你常用这个行为,可以全局配置(只对当前用户生效):
- 运行
composer config --global progress true - 或手动编辑
~/.composer/config.json,确保里面有"progress": true
注意:--progress 对 composer update 同样有效;但若终端宽度太小(比如 TERM=dumb),仍可能 fallback 到简单文本模式。
CI/CD 里想看进度但又不能交互?
很多 CI 环境(如 GitHub Actions、GitLab CI)默认不分配 TTY,所以即使加了 --progress,也可能被 Composer 自动降级。这时要配合 --no-ansi 或 --ansi 显式控制:
-
composer install --progress --ansi强制启用 ANSI 输出(适合支持颜色的 CI 日志) - 避免用
2>&1 | tee log.txt这类管道,会破坏 TTY 检测;改用script -qec "composer install --progress" /dev/null(Linux/macOS)模拟伪终端 - GitHub Actions 可加
shell: bash -l -c提升环境完整性
进度条恢复了但卡在 “Downloading” 不动?
这不是进度条的问题,而是网络或镜像源卡住。Composer 的进度条只反映 HTTP 分块下载状态,不校验内容完整性——所以可能出现“进度 100%”后长时间停顿,实际还在解压或校验。
- 检查是否用了慢速镜像:运行
composer config repo.packagist看是否指向国内源,尝试临时切回官方源composer config repo.packagist https://packagist.org - 加
-vvv查看详细请求日志:composer install --progress -vvv 2>&1 | grep -E "(GET|Downloading|writing)" - 某些杀毒软件或代理会拦截 Composer 的 HTTPS 请求,导致连接 hang 住,此时进度条“不动”其实是网络层阻塞
进度条只是表象,真正影响体验的是网络稳定性和包缓存命中率;本地开发建议开 composer clearcache 后再试,比反复调参数更管用。










