composer常用命令有哪些_composer基础指令汇总【手册】

10次阅读

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

composer常用命令有哪些_composer基础指令汇总【手册】

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.jsonconfig 字段)
  • 验证是否生效:composer config --global --list | grep repocomposer 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,那项目就走自己的源——这种覆盖关系不看清,排查网络问题能绕半天。

text=ZqhQzanResources