composer简介

PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。

简单解释
  • composer install - 如有 composer.lock 文件,直接安装,否则从 composer.json 安装最新扩展包和依赖;
  • composer update - 从 composer.json 安装最新扩展包和依赖;
  • composer update vendor/package - 从 composer.json 或者对应包的配置,并更新到最新;
  • composer require new/package - 添加安装 new/package , 可以指定版本,如: composer require new/package ~2.5。

介绍几个日常生产流程

  1. 新项目流程
  • 运行 composer install ,安装扩展包并生成 composer.lock ;
  • 提交 composer.lock 到代码版本控制器中,如:git;
  1. 项目协作者安装现有项目
  • 克隆项目后,根目录下直接运行 composer install 从 composer.lock 中安装 指定版本 的扩展包以及其依赖;

    此流程适用于生产环境代码的部署。

  1. 为项目添加新扩展包
  • 使用 composer require vendor/package 添加扩展包;
  • 提交更新后的 composer.json 和 composer.lock 到代码版本控制器中,如:git;
关于 composer.lock 文件

composer.lock 文件里保存着对每一个代码依赖的版本记录(见下图),提交到版本控制器中,并配合 composer install 使用,保证了团队所有协作者开发环境、线上生产环境中运行的代码版本的一致性。

关于扩展包的安装方法

那么,准备添加一个扩展包,install, update, require 三个命令都可以用来安装扩展包,选择哪一个才是正确的呢?
答案是:使用 composer require 命令

另外,在手动修改 composer.json 添加扩展包后, composer update new/package 进行指定扩展包更新的方式,也可以正确的安装,不过不建议使用这种方法,因为,一旦你忘记敲定后面的扩展包名,就会进入万劫不复的状态,别给自己留坑呀。

上面的概念不论对新手或者老手来说,都比较混淆,主要记住这个概念:

原有项目新添加扩展的,都使用 composer require new/package 这种方式来安装。

更新指定扩展到指定版本可以指定版本号:

1
composer require "foo/bar:1.0.0"
composer其他
  • composer 自身升级:composer self-update
  • composer 回滚:composer self-update –rollback
  • composer中require 和 require-dev的区别:前者用于声明项目发布版本的依赖包,后者用于声明项目开发或测试中依赖的包。
composer版本号 前置~和^符号的区别

~^的意思很接近,在x.y的情况下是一样的都是代表x.y <= 版本号 < (x+1).0,但是在版本号是x.y.z的情况下有区别,举个例子吧:

  • ~1.2.3 代表 1.2.3 <= 版本号 < 1.3.0
  • ^1.2.3 代表 1.2.3 <= 版本号 < 2.0.0