真正该熟练的就那6个composer命令:install、update、require、dump-autoload、config、clear-cache;其余多为插件、别名或已弃用项,硬背易致ci/cd故障。

别记15个——真正该熟练的就那6个,其余不是边缘场景就是危险操作。 Composer 官方不提供“全部命令”清单,是因为多数命令来自插件、别名或已弃用项,硬背反而容易在 CI/CD 里触发凌晨告警。
composer install 为什么必须读 composer.lock
它不做任何版本决策,只按 composer.lock 里记录的**精确版本号**安装包。CI/CD 脚本、新同事首次拉代码、生产部署,全靠它保证环境一致。
- 常见错误现象:
Your requirements could not be resolved—— 这通常不是依赖冲突,而是本地 PHP 版本或扩展缺失(install不解析约束,只校验平台要求) - 首次运行时若无
composer.lock,它会自动 fallback 到update并生成锁文件,这等于绕过团队约定;建议初始化后立刻git add composer.lock - 线上脚本里出现
composer update,构建结果就取决于 Packagist CDN 延迟和网络抖动,不是“快不快”的问题,是“稳不稳”的问题
composer update 不是更新项目,是重算依赖图
update 忽略 composer.lock,重新解析 composer.json 中所有约束(如 ^7.5),并强制改写锁文件。它不是“升级”,是“重新协商”。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 适用场景:本地验证某包新版兼容性、修复安全漏洞、升级主框架(如 Laravel 10 → 11)
- 裸跑
composer update极易引入子依赖不兼容——比如只升guzzlehttp/guzzle,但它的psr/http-client还卡在 v1.0,运行时报错才查 changelog 就晚了 - 只想升一个包?用
composer update monolog/monolog;加--with-dependencies可连带更新其直系依赖 - 升级后出问题?立刻
git checkout composer.lock && composer install,比翻日志快得多
composer require 是声明 + 安装 + 锁定三步合一
手写 composer.json 再 install 是低效且危险的路径:漏逗号、引号不闭合、版本写成 "7.5" 而非 "^7.5",都会导致后续失败。
- 开发工具(如
phpunit/phpunit、phpstan/phpstan)必须加--dev,否则进require区,上线也会加载,徒增内存和启动开销 - 指定版本必须带约束符:
composer require guzzlehttp/guzzle:^7.5(推荐),而不是7.5(会被解释为严格等于7.5.0,基本匹配不到) - 只想改
composer.json但暂不安装?加--no-update,例如composer require symfony/console --no-update - 遇到平台限制(如本地 PHP 8.3,但包只支持 8.2)可临时加
--ignore-platform-reqs强装,但绝不能提交,CI 环境禁用
autoload 失效时 dump-autoload 是第一响应动作
Composer 不监听文件增删。新增 PSR-4 目录、改了 autoload 配置、甚至只是改了 files 类型的全局函数文件(如 app/Helpers/functions.php),都必须手动刷新。
-
Class not found报错,90% 不是命名空间或路径错了,是 autoloader 没重建 - 开发中频繁加类又不想每次
update?加-o生成 classmap:composer dump-autoload -o,比默认 PSR-4 查找更快 - 生产环境进一步提速?用
--classmap-authoritative:composer dump-autoload --optimize --classmap-authoritative,它跳过文件存在性检查,但要求所有类都在映射里
最常被忽略的其实是作用域问题:换源时写 composer config -g repositories.packagist 是错的,正确 key 是 repo.packagist;remove 和 clear-cache 虽不常用,但一旦缓存损坏或 autoload 映射残留,它们就是唯一能快速止损的命令。










