搜索
首页开发工具composercomposer命令介绍之install和update及其区别

composer 是 php 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。

composer命令介绍之install和update及其区别

然而,对于如何『安装他们』,新手可能并不清楚。

网上的答案有的说 composer install,有的说composer update,而这两者似乎都能成功把依赖下载下来并安装好,那么他们究竟有何区别呢?

相关推荐:《composer教程

首先要搞清楚的一件事情是,所有的依赖都定义在composer.json中,手册中给出了一些基本用法和例子。你可能已经注意到,在指定版本号的时候,我们并不一定要指明一个精确的版本。那么就有可能发生这么一个情况,对于同一份composer.json,我们在不同时刻拉取到的依赖文件可能不同(因为composer会在满足条件的情况下去拉取最新的那份依赖),从而导致一些异常情况。

composer update和composer install正是为了解决这个问题而出现的。

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

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这个依赖,别的依赖哪怕有更新也会被忽略。

以上是composer命令介绍之install和update及其区别的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:xia。如有侵权,请联系admin@php.cn删除
使用作曲家:简化PHP中的软件包管理使用作曲家:简化PHP中的软件包管理Apr 18, 2025 am 12:01 AM

Composer是一个PHP依赖管理工具,通过composer.json文件管理项目依赖。1.安装Composer:运行几条命令并移动到全局路径。2.配置Composer:在项目根目录创建composer.json文件并运行composerinstall。3.依赖管理:通过composer.json指定库及其版本,使用语义化版本号控制。4.使用Autoloading:通过autoload字段定义类的自动加载规则,简化开发。5.包管理:支持私有库管理,通过repositories字段定义私有库地址

如何使用Composer简化PHP项目中的性能监控如何使用Composer简化PHP项目中的性能监控Apr 17, 2025 pm 11:57 PM

在开发PHP项目时,我们常常需要对代码的执行时间进行监控,以优化性能。在我最近的一个项目中,我遇到了一个问题:需要在不同代码段之间进行精确的计时,但手动实现计时器不仅繁琐,而且容易出错。经过一番探索,我发现了phpunit/php-timer这个库,它通过Composer轻松集成,极大地简化了我的工作。

解决版本管理困扰:phar-io/version库的使用指南解决版本管理困扰:phar-io/version库的使用指南Apr 17, 2025 pm 11:54 PM

在开发过程中,版本管理一直是个棘手的问题,尤其是在处理软件包依赖时。最近,我在项目中遇到了一个关于版本控制的问题:需要精确地管理和比较不同软件包的版本信息,确保项目能够正确地依赖和升级。我尝试了几种方法,但效果不尽如人意。最终,我找到了phar-io/version这个库,它完美地解决了我的问题。

使用Composer轻松实现PHP8.3功能的向下兼容使用Composer轻松实现PHP8.3功能的向下兼容Apr 17, 2025 pm 11:51 PM

在开发项目时,我常常需要使用一些新版本PHP的特性,但有时由于服务器环境的限制,不得不使用较低版本的PHP。这导致我无法使用某些新功能,比如PHP8.3中引入的json_validate和Override等。为了解决这个问题,我找到了Symfony的polyfill-php83库,它让我可以在低版本PHP中使用这些新功能。

如何使用Composer轻松统计PHP代码行数如何使用Composer轻松统计PHP代码行数Apr 17, 2025 pm 11:48 PM

在进行PHP项目开发时,统计代码行数是一项常见的需求,尤其是在评估项目规模或进行代码审查时。然而,手动统计不仅耗时且容易出错。最近,我在项目中遇到了这个需求,尝试了多种方法后,最终通过Composer安装sebastian/lines-of-code库,轻松解决了这一问题。

解决PHP超时问题:phpunit/php-invoker库的应用解决PHP超时问题:phpunit/php-invoker库的应用Apr 17, 2025 pm 11:45 PM

在开发PHP项目时,经常会遇到一些函数或方法执行时间过长,导致程序超时的问题。我曾尝试了多种解决方案,但效果不尽如人意,直到我发现了phpunit/php-invoker库。这个库通过设置超时时间来调用可执行函数,彻底解决了我的难题。

如何使用Composer解决文件类型检测的难题如何使用Composer解决文件类型检测的难题Apr 17, 2025 pm 11:42 PM

在开发一个文件处理系统时,我遇到了一个棘手的问题:如何准确地检测文件的MIME类型。最初,我尝试使用PHP的内置函数mime_content_type()和finfo类,但发现这些方法在处理某些特殊文件时不够稳定,导致系统误判文件类型,影响了用户体验。经过一番探索,我找到了league/mime-type-detection这个库,它为我的项目带来了完美的解决方案。

如何使用Composer轻松管理集合数据:ramsey/collection库的应用如何使用Composer轻松管理集合数据:ramsey/collection库的应用Apr 17, 2025 pm 11:39 PM

在项目开发中,我遇到了一个常见但棘手的问题:如何高效地管理和操作集合数据。我尝试了多种方法,但处理复杂数据结构时总觉得不够灵活和高效。后来,我发现了ramsey/collection这个库,它彻底改变了我的开发体验。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前By尊渡假赌尊渡假赌尊渡假赌
威尔R.E.P.O.有交叉游戏吗?
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。