【PHP】Composer使用简介,composer install 和 update 区别

一、composer是php的依赖包管理工具php

二、符合PSR-0/1/2/3/4 规范json

三、composer安装推荐使用国内镜像composer

四、composer require/install/update 区别:工具

然而,对于如何『安装他们』,新手可能并不清楚。网上的答案有的说 composer install,有的说composer update,而这二者彷佛都能成功把依赖下载下来并安装好,那么他们究竟有何区别呢?ui

首先要搞清楚的一件事情是,全部的依赖都定义在composer.json中,手册中给出了一些基本用法和例子。你可能已经注意到,在指定版本号的时候,咱们并不必定要指明一个精确的版本。那么就有可能发生这么一个状况,对于同一份composer.json,咱们在不一样时刻拉取到的依赖文件可能不一样(由于composer会在知足条件的状况下去拉取最新的那份依赖),从而致使一些异常状况。composer update和composer install正是为了解决这个问题而出现的。spa

当你执行composer update的时候,composer会去读取composer.json中指定的依赖,去分析他们,而且去拉取符合条件最新版本的依赖。而后他会把所拉取到的依赖放入vendor目录下,而且把全部拉取的依赖的精确版本号写入composer.lock文件中。3d

composer install所执行的事情很是相似,只在第一步的时候有差异。当你本地若是已经存在一份composer.lock时,它将会去读取你的composer.lock而非composer.json,而且以此为标准去下载依赖。当你本地没有composer.lock的时候,它所作的事情和composer update其实并无区别。版本控制

这意味着,只要你本地有一份composer.lock,你就能够保证不管过去了多久,你都能拉到相同的依赖。而若是你把它归入你的项目的版本控制中,那么你就能够确保你项目中的每个人、每一台电脑,无论什么系统,都能拉取到如出一辙的依赖,以减小潜在的依赖对部署的影响。固然,请记得,你应该使用的命令是composer install。code

那何时该使用composer update呢?当你修改了你的依赖关系,不论是新增了依赖,仍是修改了依赖的版本,又或者是删除了依赖,这时候若是你执行composer install的时候,是不会有任何变动的,但你会获得一个警告信息blog

Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.

 

有人可能会很好奇php是怎么知道我修改了依赖,或者composer.lock已通过期了。很简单,若是你打开composer.lock的话,会发现其中有一个hash字段,这就是当时对应的那份依赖的哈希值。若是值不一致天然而然就知道发生了变动了。

这时候,你应该去经过composer update来更新下你的依赖了。

若是你不但愿影响别的已经安装的依赖,仅仅更新你修改的部分,那你能够经过指定白名单来肯定要更新的范围,例如:(tp5的queue队列包示例:从v1.1.4-->>v1.1.6)

先修改composer.json 指定包的版本号:

 

而后cli模式执行命令:

composer update topthink/think-queue=v1.1.6

仅会更新 topthink/think-queue 这个依赖,别的依赖哪怕有更新也会被忽略。

效果:

相关文章
相关标签/搜索