本文共 2937 字,大约阅读时间需要 9 分钟。
第一步:
安装 php -r "readfile('https://getcomposer.org/installer');" | php 配置环境变量第二步:
初始化工作目录 使用composer初始化工作目录,在项目的根目录命令行输入: composer init 编写composer.json文件 { "name":"testor/composer_test" ,"require": { "提供者/项目名":"项目版本" } }我的代码如下:
{ "name": "admin/yizhayan", "authors": [ { "name": "qingting", "email": "1417743769@qq.com" } ], "require": { "endroid/qr-code": "^3.9", "topthink/think-queue" :"^1.1.4", "topthink/think-mongo" :"^1.8.2", "topthink/think-migration" :"^1.1.1", "topthink/think-installer" :"^1.0.12", "topthink/think-image" :"^1.0.7", "topthink/think-helper" :"^1.0.6", "topthink/think-captcha" :"^1.0.7", "phpoffice/phpexcel" :"^1.8.2", "phpmailer/phpmailer" :"^6.0.5", "aliyuncs/oss-sdk-php" :"^2.3.0", "dh2y/think-qrcode": "^2.0" }}
第三步:
在composer.json文件所在目录命令行下执行如下命令: php composer.phar install或composer install其中,vendor文件夹存放了项目的依赖库,composer把安装时确切的版本号列表写入composer.lock文件用来锁定composer,这将锁定该项目的特定版本。
composer.lock文件
当项目根目录下已经生成composer.lock文件时,当执行命令composer intsall时composer只会下载composer.lock文件指定的版本,忽略 composer.json 文件中的定义,从而确保团队成员都使用相同的依赖包。若package.json进行了修改需要更新依赖库和更新锁文件,可以执行以下命令: php composer.phar update或composer update
参考网址:
https://blog.csdn.net/zsl10/category_6312016.html https://www.cnblogs.com/ivy-zheng/p/11498839.html 注:composer install的话是根据composer.lock来的 composer update的话是根据composer.json来的
首先要搞清楚的一件事情是,所有的依赖都定义在composer.json
中,手册中给出了一些。你可能已经注意到,在指定版本号的时候,我们并不一定要指明一个精确的版本。
那么就有可能发生这么一个情况,对于同一份composer.json
,我们在不同时刻拉取到的依赖文件可能不同(因为composer会在满足条件的情况下去拉取最新的那份依赖),从而导致一些异常情况。
composer update
和composer install
正是为了解决这个问题而出现的。
1、当你执行composer update
的时候,composer会去读取composer.json
中指定的依赖,去分析他们,并且去拉取符合条件最新版本的依赖。
然后他会把所拉取到的依赖放入vendor目录下,并且把所有拉取的依赖的精确版本号写入composer.lock
文件中。
2、composer install
所执行的事情非常类似,只在第一步的时候有差别。当你本地如果已经存在一份composer.lock
时,
它将会去读取你的composer.lock
而非composer.json
,并且以此为标准去下载依赖。
当你本地没有composer.lock
的时候,它所做的事情和composer update
其实并没有区别。
这意味着,只要你本地有一份composer.lock
,你就可以保证无论过去了多久,你都能拉到相同的依赖。而如果你把它纳入你的项目的版本控制中,
那么你就可以确保你项目中的每一个人、每一台电脑,
不管什么系统,都能拉取到一模一样的依赖,以减少潜在的依赖对部署的影响。当然,请记得,你应该使用的命令是composer install
。
那什么时候该使用composer update
呢?当你修改了你的依赖关系,不管是新增了依赖,还是修改了依赖的版本,又或者是删除了依赖,
这时候如果你执行composer install
的时候,是不会有任何变更的,但你会得到一个警告信息
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
来更新下你的依赖了。
如果你不希望影响别的已经安装的依赖,仅仅更新你修改的部分,那你可以通过指定白名单来确定要更新的范围,
例如composer update monolog/monolog
仅会更新monolog/monlog这个依赖,别的依赖哪怕有更新也会被忽略。