yii2教程:团队开发通过git仓库初始化本地项目和环境变量的用法
ccwgpt 2024-09-15 15:11 36 浏览 0 评论
因为公司的项目开始得早,公司用的是yii1的版本,我们团队是用git进行版本管理的,因为yii1几本是把所有的php代码都签入到git上的,所以,在团队有新人进来时,只要把git服务器上的代码克隆到本地就可以直接进行开发了,在初始化开发人员的本地项目时基本没碰到什么问题,当然,这里只说yii1对应的php项目代码,如果是完整的项目,还会包括前端项目的初始化,比如node.js(包括了npm)、grunt、vue等前端环境的搭建,这个已经超出php和yii范畴,就不深入了。
相对于yii1,yii2在框架的完整性上更加完善,甚至考虑到了团队协作开发和版本升级的一些细节。
今天我们就来说说,yii2的项目在团队开时,如果有新成员进入团队,通过git服务器,初始化本地开发环境的步骤。
这里先说一下我以前的一个经历,我个人是用yii2的,然后通过互联网的git云平台管理我的项目代码,通过git我可以在不同电脑间同步我的开发项目。
直到有一天,我在一台新电脑上执行codecept测试命令:
.\vendor\bin\codecept run -c api
既然出现了如下的错误(为了截图,我故意重现了当时的环境):
我很纳闷,为什么在另外一台电脑上执行这个命令是没问题的,这个codeception-local.php文件为什么在我这台电脑上没有存在,但是在另外一台电脑上却有这个文件,我需要搞清楚它是怎么来的。
我之前在不同机器上同步我的yii2项目时,用的是如下的步骤:
1 从git服务器上克隆代码到本地开发环境
2 执行composer install命令安装yii2项目和我在开发过程中引用的第三方组件
3 手动在web目录下建立index.php文件,在config目录下建立:main-local.php、params-local.php,在对应新建的文件上完善相应的代码,通常是不同开发环境的数据库服务器配置。
4 配置web服务器
用上面的步骤,就可以在新的电脑上同步我的开发项目了,我用这样的步骤一直没有问题,直到出现上面的错误,发才意识到,我应该是哪里做错了
回顾一下,上面的步骤,会发现第三步手动建立index.php、main-local.php等文件好像是一个很傻的动作,为什么要手动建立呢?而不是同步呢?
关于为什么需要手动建立index.php、main-local.php文件这里要说明一下,这是yii2框架进一步考虑到团队开发协作的需求,在团队开发的时候,开发人员可能因为开发过程的需要或者本地环境不同,需要修改本地的配置文件,在一般的情况下,配置文件会纳入git仓库进行版本管理的,这样,他在提交代码的时候,就会把修改过的、只适合他本地环境的开发配置参数随着配置文件提交到服务器上去了,别的开发人员在拉取代码时他本地的配置参数就会被覆盖,并且,这新的配置参数可能不是这个开发人员所需要的,会影响他的开发工作,严重情况下可能会误删数据(比如开发环境有多个开发数据库的情况下),这样给团队协作造成了麻烦。
yii2为了完善这个问题,用了多个配置文件,并且对配置文件进行了分级的方法来解决这个问题。
首先,在默认的情况下,yii2项目的git管理模板会忽略掉web目录下的index.php文件,config目录下的:main-local.php、params-local.php...等文件,只要是文件名里带有local的文件都会忽略掉。
然后,在项目里,yii2框架对配置文件进行了优先级区分,优先级顺序分别是: app\config\main-local.php > app\config\main.php > common\config\main-local.php > common\config\main.php,其中app代表某个yii2的项目,在不同的配置文件里,key名相同的配置项,会按优先级进行覆盖,就因为这个优先级覆盖加上local的配置文件不包含到git仓库中,让开发人员可以灵活、大胆的配置本地参数,按照自己具体的需求配置参数且不会覆盖别人的配置参数了。
说明了上面的规则,还是没有解决我纳闷的问题:那个codeception-local.php是怎么来的,在另外一台为什么有这个问题件?经过一番对比,我终于发现,我在从git仓库同步代码,初始化本地yii2开发项目时,少了一个步骤:执行yii2的init命令。
在查看了init命令的代码文件后在上面的初始化步骤里,第三步是很傻的,main-local.php等文件是不用手动建立的,在第三步,只要执行init命令,初始化本地的yii项目开发环境,就会自动建立main-local.php等本地文件了。
所以正确的步骤是:
1 从git服务器上克隆代码到本地开发环境
2 执行composer install命令安装yii2项目和我在开发过程中引用的第三方组件
3 在yii2项目的总根目录下,执行 init命令,记得,在提示里有提示要不要覆盖已存在的配置文件的,这时,记得选择:不覆盖:
从图上可以看出,codeception-local.php文件就是在这个步骤建立的,并且,红框里选择的是“不覆盖”
4 配置web服务器
这个时候,其实我们还另外一个发现:就是yii2项目高级模板里的environments项目到底是干嘛用的,其实我们执行init命令的时候,yii2框架是通过从environments目录里复制对应配置文件到具体项目的config文件里的,也就是说,我们可以在environments项目里配置我们统一的main-local.php配置文件,然后一样纳入git仓库,这样,在团队成员初始化项目开发环境时,就可以直接从environments项目里初始化,不用像我开始一样傻兮兮的自己手动建立了,这就是yii2项目环境变量的用途。
我们如果新增了一个yii2的项目,需要在environments项目中增加相应的配置文件,这样团队成员就可以通过纳入git仓库的environments项目同步到main-local.php等配置文件了。
相关推荐
- NestJS入门教程系列一
-
介绍Nest(NestJS)是用于构建高效,可扩展的Node.js服务器端应用程序的框架。它使用渐进式JavaScript,内置并完全支持TypeScript(但开发人员仍然能够使用JavaScrip...
- 【推荐】一个网盘资源搜索与转存工具,支持移动端与PC端!
-
如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍CloudSaver是一个基于Vue3和Express的网盘资源搜索与转存开源实用工具。它支持...
- Appium原理精讲
-
目前使用Appium新版本和旧版本的企业数目都很多,而两个版本的安装过程和api的使用又有较大的区别。但是无论表面上的东东如何变化,内部原理都是一样的。在这里我给大家介绍一下appium的核心,增进大...
- Kubernetes最小部署单元Pod
-
一、Kubernetes与Pod简介在当今云计算和容器化技术盛行的时代,Kubernetes已然成为容器编排领域的中流砥柱。它是一个开源的容器编排平台,由Google基于其内部使用的Bo...
- 最常用的四种跨域解决方案
-
前置知识什么是跨域?浏览器发送的请求地址(URL)与所在页面的地址不同(端口/协议/域名其一不同)。简言之,浏览器发出的请求url,与其所在页面的url不一样。此时,同源策略会让浏览器拒收服务器...
- Bolt.New —— 全栈AI Web自动编程
-
Bolt.New是由StackBlitz公司推出的,全栈AI工具,代码编辑、运行、部署,通通一站式搞定。它使用WebContainers技术,无需任何本地安装或配置,在浏览器中,就可以运行完整的No...
- Nodejs Express新手教程&高手进阶
-
NodejsExpress新手教程&高手进阶Express是一个NodeJS平台的框架,主要用于构于Web服务器项目。本文将通过示例介绍适合新手入门的Express基础使用,以及高手进阶知识,如:c...
- Express.js 创建Node.js Web应用
-
Express.js是一个基于Node.js的Web应用框架,框架的设计目的是构建应用的架构和简化应用的开发。框架会解决一些通用的问题,在Express.js中,Express框架会处理如:中间件、代...
- JavaScript 的 Express.js 功能及应用场景详解
-
Express.js是一个基于Node.js的轻量级Web应用框架,主要用于快速构建服务器端应用和API。它的核心功能包括以下关键点:1.路由管理URL路径与HTTP方法映射:通过...
- nodejs的express4文件下载
-
在nodejs的express框架中,下载变得非常简单,就一个方法,res.download()首先express命令行生成项目基本框架:不会的看这里:http://blog.csdn.net/zz...
- Express 系列:快速生成一个项目
-
系列预告本系列将以一个项目入手结合相关技术细节来带领大家一起学习Express这个基于Node.js的后端框架。本文首先将介绍:如何快速的生成一个具有一定结构的Express项目。Express项目结...
- nodejs的express自动生成项目框架
-
nodejs版本为:4.X,express版本为4.X1.全局安装2个模块express、express-generator在命令行输入:npminstall-gexpressnpminsta...
- express开发(一)简介与搭建
-
上周末去了趟上海书城,不愧是上海数得上号的书城,流行的科技书应有尽有,话不多说直接上图。最经典的C语言O(∩_∩)O最流行的java(づ ̄3 ̄)づ超酷的R语言/(ㄒoㄒ)/~~然而,身为一个坚定的前...
- Vue+Echarts可视化大屏系统后端框架搭建(附代码)
-
各位同学,大家好。上节课,前面我们讲解了Vue+Echarts前端部分的设计方法。这节课程,我们开始讲解使用Express进行后端设计的方法。01项目相关理论介绍什么是expressExpress是...
- Shopify电商API接口开发
-
Shopify电商API接口开发上线流程主要包括以下步骤。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎洽谈合作。前期准备-注册Shopify账号:在Shopify官网注册,用于后续开发测试...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- bootstrap框架 (43)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- laravel框架 (46)
- express框架 (43)
- scrapy框架 (52)
- beego框架 (42)
- java框架spring (43)
- grpc框架 (55)
- 前端框架bootstrap (42)
- orm框架有哪些 (43)
- ppt框架 (48)
- 内联框架 (52)
- winform框架 (46)
- gui框架 (44)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)