composer命令介绍之install和update及其区别
发布时间 - 2019-10-21 00:00:00 点击率:次composer 是 php 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。
然而,对于如何『安装他们』,新手可能并不清楚。
网上的答案有的说 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
# php
# json
# 当你
# 如果你
# 都能
# 的说
# 会在
# 那份
# 会去
# 你就可以
# 这时候
# 也会
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
如何用腾讯建站主机快速创建免费网站?
iOS发送验证码倒计时应用
猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】
,在苏州找工作,上哪个网站比较好?
如何快速搭建个人网站并优化SEO?
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
深圳网站制作的公司有哪些,dido官方网站?
创业网站制作流程,创业网站可靠吗?
如何在宝塔面板中修改默认建站目录?
什么是JavaScript解构赋值_解构赋值有哪些实用技巧
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
制作电商网页,电商供应链怎么做?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
Laravel如何实现模型的全局作用域?(Global Scope示例)
C++时间戳转换成日期时间的步骤和示例代码
JavaScript模板引擎Template.js使用详解
Laravel集合Collection怎么用_Laravel集合常用函数详解
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤
如何在建站之星绑定自定义域名?
如何破解联通资金短缺导致的基站建设难题?
JS去除重复并统计数量的实现方法
历史网站制作软件,华为如何找回被删除的网站?
如何在万网自助建站平台快速创建网站?
如何为不同团队 ID 动态生成多个“认领值班”按钮
百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧
再谈Python中的字符串与字符编码(推荐)
android nfc常用标签读取总结
Laravel如何记录自定义日志?(Log频道配置)
企业网站制作这些问题要关注
宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程
怎么用AI帮你为初创公司进行市场定位分析?
零基础网站服务器架设实战:轻量应用与域名解析配置指南
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
如何获取PHP WAP自助建站系统源码?
如何快速登录WAP自助建站平台?
如何快速生成可下载的建站源码工具?
如何在IIS中新建站点并解决端口绑定冲突?
Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】
html5的keygen标签为什么废弃_替代方案说明【解答】
公司网站制作需要多少钱,找人做公司网站需要多少钱?
如何用IIS7快速搭建并优化网站站点?
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
html如何与html链接_实现多个HTML页面互相链接【互相】
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?

