唯一正解是composer require vendor/package,它专为新增或更新单个依赖设计,自动写入composer.json、解析依赖、下载安装并更新composer.lock;composer install仅还原lock文件,不接受包名参数,输入会被忽略或报错。

想只装一个包,就用 composer require vendor/package,别碰 composer install——它根本不接受包名参数,输进去也会被忽略或报错。
composer require 是唯一正解
这个命令专为“新增或更新单个依赖”设计,会自动写入 composer.json、解析依赖树、下载安装并更新 composer.lock。
- 装最新稳定版:
composer require guzzlehttp/guzzle - 装精确版本:
composer require monolog/monolog:2.9.1(冒号分隔,@或=无效) - 装开发分支:
composer require symfony/console:dev-main - 如果包已存在,
require默认尝试升级;加--no-update可先写配置,后续再手动composer update
为什么 composer install 不行
composer install 的作用就是还原 composer.lock 里记录的全部依赖状态。它不认命令行后写的任何包名或版本,也不管 composer.json 里新增了啥。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 输
composer install guzzlehttp/guzzle→ 报Unknown argument或静默忽略后面部分 - 删掉
composer.lock后跑install,等价于全量update --lock,不是“只装某包” - 想让新
require生效?必须执行require或改完composer.json后跑composer update vendor/package
常见失败原因和验证点
命令执行成功不代表真装对了,尤其容易卡在版本解析或缓存上。
- 包名大小写敏感:
monolog/monolog对,Monolog/Monolog错 - 版本不存在时会报
No matching package found,先查 Packagist 或运行composer show -a vendor/package - 装完发现是
dev-main而非 tag?检查composer.lock中该包的source.type是否为dist,source.reference是否为空或短哈希 - 验证实际代码来源:
git log -n1 vendor/vendor/package看 commit hash,别只信composer show输出
真正“只装某个包”的动作,从来就只是 composer require 这一条路;其他命令要么没这功能,要么行为完全偏离预期。最常被忽略的是:装完必须确认 composer.lock 已更新、vendor/ 下文件时间戳是新的、且自动加载映射已生效——否则你可能还在用旧代码跑新配置。










