Composer require 默认不显示实时进度条,仅最后输出安装结果;加 -v 参数可查看详细步骤日志,包括下载URL、解压、autoload生成等关键信息,便于定位卡顿原因。

composer require 本身不显示安装进度条
执行 composer require 时默认是静默的,只在最后输出“Installing …”和“Generating autoload files”,中间下载、解压、写入 vendor 的过程没有实时进度反馈。这不是 bug,而是 Composer 的设计选择:它依赖底层 HTTP 客户端(如 cURL)和文件系统操作,不内置进度 UI。
加 -v 或 --verbose 看详细步骤日志
用 -v 参数可展开每一步动作,包括包解析、版本锁定、HTTP 请求 URL、tarball 下载路径、解压目标、autoload 生成细节等。这对排查卡在哪一步(比如卡在某个包的 dist 下载、或 autoload 冲突)非常关键:
composer require monolog/monolog -v
常见有效信息包括:
- 看到
Downloading https://.../monolog/monolog/...tar行,说明正在拉取 dist 包 - 出现
Extracting archive表示已下载完成,开始解压 - 末尾有
Generating optimized autoload files,说明 autoloader 已重建 - 若卡住超过 30 秒没新输出,大概率是网络问题(尤其没配镜像时直连 packagist.org)
用 --no-progress 反而会关掉已有进度提示
注意:Composer 在下载阶段其实有极简的 ASCII 进度指示(如 [>---------------------------] 0%),但这个只在非 TTY 环境(如 CI)下默认关闭。手动加 --no-progress 会彻底禁用它——所以别加。真正想“看进度”,靠 -v 查日志比等那个小横条更可靠。
想监控实际磁盘/网络行为?直接看 vendor 和临时目录
Composer 下载的压缩包缓存在 ~/.composer/cache/files/(Linux/macOS)或 %APPDATA%\Composer\Cache\files\(Windows),解压前会先放这里。你可以另开终端运行:
ls -lh ~/.composer/cache/files/ | tail -5
或观察 vendor 目录是否开始出现对应包名的符号链接/文件夹:
ls -la vendor/monolog/
如果 vendor/monolog/monolog 已存在且是真实目录(不是空或报错),基本说明安装已落地;如果是符号链接,则说明是 path 类型依赖,和进度无关。
最常被忽略的一点:composer require 的“进度”本质是离散事件流,不是连续百分比。盯着终端等一个进度条,不如用 -v + 快速扫日志行 + 检查 vendor 状态来得直接。


















