composer install与composer update的区别

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文件。

installupdate 都是Composer的核心命令。使用install可安装所有项目依赖项并生成composer.lock文件。而update可更新所有或指定的依赖项至他们的最新版本并更新与之相关的锁文件。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。