Composer命令需按场景选用:install读lock部署,require改json开发;换源用repo.packagist而非repositories.packagist;remove/dump-autoload/clear-cache用于维护;init/create-project/validate助新手起步。

composer 常用命令不是“背下来就行”,而是按场景选对命令——用错一个,轻则依赖混乱,重则本地环境和 CI 构建不一致。
安装依赖该用 install 还是 require?
看你是“首次拉项目”还是“加新包”:
– composer install:只读 composer.lock,装里面锁定的**精确版本**,适合部署、协作、CI;
– composer require:改 composer.json + 自动执行 update,会升级已有依赖(除非加 --no-update),适合开发中加功能。
- 误用
install后又手动改了composer.json?下次运行前必须composer update同步 lock 文件,否则实际装的和声明的不一致 -
require默认写进require字段;加--dev才进require-dev,比如phpunit/phpunit就该这么装 - 想加包但不更新其他依赖?用
composer require monolog/monolog --no-update,再手动composer update monolog/monolog
换镜像源为什么总配不对?
国内访问 Packagist 慢,换镜像本质是改 repo.packagist 配置项,但有作用域陷阱:
- 全局生效(推荐):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 仅当前项目生效:
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(写进本项目composer.json的config字段) - 验证是否生效:
composer config --global --list | grep repo或composer config --list看输出里有没有你设的 URL - ⚠️ 错误示范:
composer config -g repositories.packagist ...—— 多写了repositories.,正确 key 是repo.packagist
删包、清缓存、重生成自动加载,三类高频维护操作
这些命令不常写,但出问题时必须立刻响应:
- 卸载一个包:
composer remove monolog/monolog(比手动删composer.json+update更安全,自动清理 autoload 映射) - 清缓存(尤其换网络/代理后装包失败):
composer clear-cache;缓存路径可查:composer config --global cache-dir - 改了
autoload字段(如新增 PSR-4 映射)后,必须运行:composer dump-autoload;加-o参数可生成优化版(composer dump-autoload -o),提升生产环境加载速度
初始化、创建项目、验证配置,新手最容易卡住的三步
不是所有命令都天天用,但第一次搭项目时,这三个命令决定后续是否顺滑:
-
composer init:交互式生成composer.json,填完基本信息就生成好文件,比手写快;若跳过交互,可用composer init --name=myorg/myapp --description="..." --author="me" -
composer create-project laravel/laravel blog:相当于git clone+install一步到位;加--prefer-dist走压缩包下载更快 -
composer validate:检查composer.json格式是否合法、字段是否拼错(比如把require写成requre),CI 中建议加入校验流程
真正容易被忽略的是配置优先级:本地 composer.json > 全局 ~/.composer/config.json > 系统级。改了全局镜像,但项目里又写了 repo.packagist,那项目就走自己的源——这种覆盖关系不看清,排查网络问题能绕半天。










