composer help 仅显示顶层指令概览,查完整命令用 composer list,查子命令详情需指定名称如 composer help require,全局选项见 composer --help,参数顺序不影响实际执行逻辑。

composer help 不显示完整命令列表?
默认运行 composer help 只显示顶层指令概览,不展开子命令(比如 require 的具体选项),容易误以为“没帮助”。这不是 bug,是 Composer 的分层设计逻辑:它把帮助拆成两级。
- 查所有可用命令:用
composer list—— 这才是找命令的起点 - 查某条命令的详细用法:必须指定命令名,例如
composer help require或简写composer require --help - 想看全局选项(如
--no-dev、-v):composer help底部有小字说明,但更可靠的是composer --help
composer help require 显示参数混乱?
composer help require 列出的参数顺序和实际优先级不一致,尤其当混用 --dev、--prefer-dist、--no-update 时,行为可能反直觉。根本原因是 Composer 在解析参数时,会按内部规则重排执行顺序,而非简单从左到右。
-
--no-update是最常被忽略的“开关型”参数:加了它,require只改composer.json,不装包也不写vendor/ -
--dev和--no-dev互斥,但--dev优先级更高;如果同时出现,后者会被忽略(无报错) - 路径参数(如包名
monolog/monolog)必须放在所有选项之后,否则会被当成选项值吞掉
中文环境下 help 输出乱码或缺字?
不是编码问题,是 Composer 默认不加载本地化文案。它的 help 文本硬编码为英文,且不走系统 locale,所以改终端编码或环境变量无效。
- 唯一能影响 help 显示语言的方式是改 Composer 源码(不推荐)
- 国内用户更实用的做法:用
composer list -v查命令+简短描述,再配合官网文档查细节 - 注意官网文档版本要和本地 Composer 版本对齐,
composer --version必须先确认
help 里写的 --optimize-autoloader 为什么没生效?
这个选项只在 install 或 update 时起作用,help 本身不会触发任何构建行为。很多人复制 help 示例里的命令,漏掉了真正执行的上下文。
- 正确姿势:
composer install --optimize-autoloader,不是composer help install --optimize-autoloader - 该选项会生成优化后的
vendor/autoload.php,跳过部分文件扫描,但会增加首次安装时间 - CI 环境中建议固定使用
--optimize-autoloader --no-dev,避免因开发依赖引入意外 autoload 规则









