1. 什么是Composer
Composer是PHP的依赖管理工具,它允许您声明 PHP 应用程序所依赖的库,在安装或更新这些依赖关系时自动解决依赖关系的管理工具。
Composer提供以下功能:
管理应用程序的依赖关系,安装和更新库
自动加载类
自动生成autoload文件
Composer包括两个核心命令:
install:安装项目的所有依赖项,如果没有vendor
目录则会自动创建
update:更新所有已安装依赖项到最新版本并解决版本冲突
2. Composer install和Composer update的区别
2.1 Composer install
Composer install 用于安装项目的所有依赖项,即安装composer.json
中规定的所有依赖。如果composer.lock
文件不存在,则会创建。安装的库都会被存储在vendor
目录中。
一般流程:首先,在应用的根目录下执行composer install
,Composer会读取composer.json
文件,找到声明的依赖关系,并安装。
注意:
第一次执行前,请先确保已安装system-level依赖项。
composer install
命令会检查系统中是否已经安装了请求的分发软件包。如果没有,它会提示您并停止安装。这应该只会发生一次,应该在系统中安装 .phar 文件。
composer.lock
文件记录了当前实例安装的精确版本,该文件的存在可确保所有用户在开发,测试和生产环境中都安装了相同的依赖关系版本。
composer会自动安装composer.lock
文件中的依赖关系(而不是composer.json
文件中的依赖关系),以确保安装的所有库和依赖项版本都是“冻结”的。
如果您在初始项目安装后添加/更新依赖项,composer install
会忽略锁文件并安装新依赖项。不过会在执行composer install
后再次生成composer.lock
,确保其他用户也可以安装新依赖项。执行composer install
会引起其他用户编译时错误。
示例:
composer install
2.2 Composer update
Composer update用来更新项目的所有依赖包到他们最新的版本,并解决版本冲突。若指定了包标识,则只更新指定包,否则更新全部依赖项至最新版本。
一般流程:在项目根目录下执行composer update
,Composer根据composer.json
文件更新所有的已安装的依赖库到最新版本,然后更新composer.lock
文件。
注意:
如果没有指定要更新的软件包,则会更新所有安装的包,这可能会导致您的应用出现问题。即使直接更新了composer.lock
文件,更新安装时还会更新锁定。对于其他人,锁定文件意味着他们安装的包版本是受保护且稳定的,因此建议只在了解影响和充分测试后才更新锁定文件。
composer会遵循composer.json
中定义的规则以及软件包的依赖项来解决最新版本。
例如:
当前依赖版本:v1 -> 依赖软件包A v1和B v1;
A v1 依赖于 B v1和C v1。
当更新库时,Composer将尝试解决以下新状态:
v2 -> 依赖软件包A v2和B v2;
A v2 依赖于C v2和B v1。
这可能会导致您的依赖项版本与预期的不同。
所有版本解决都使用SemVer版本管理系统。
lock文件只有在更新项目依赖项时才应提交。
示例:
composer update
3. 总结
Composer是PHP应用程序的依赖关系管理工具。它可以方便地管理项目依赖项,自动加载类,并生成autoload文件。
install
和 update
都是Composer的核心命令。使用install
可安装所有项目依赖项并生成composer.lock
文件。而update
可更新所有或指定的依赖项至他们的最新版本并更新与之相关的锁文件。