先决条件:
我需要组织单页应用程序(SPA)项目开发,前端应该基于popuplar前端js框架之一,这意味着使用基于gulp/webpack的前端构建系统来构建Es2015js源代码、Sass样式和Jade标记的最终捆绑包。后端应该基于Laravel 5.x.
所以最后我有了前端捆绑包,它应该与后端代码一起使用。在开发的每个阶段,我都有特定的前端捆绑包和特定的后端代码,它们可以正确地协同工作。
问题:
-
如何最正确地将我的所有源代码置于版本控制之下(比如说使用Git)?我需要为后端和前端部分的两个独立回购的所有项目创建一个回购吗?为什么?
-
如何组织版本控制,以便将项目的当前发布版本最方便、最简单地部署到生产服务器?
以下是我的想法:在一个repo中同时拥有前端捆绑包和后端代码的实际版本+迁移看起来是个好主意,但我的困境是:对于生产,我只需要前端捆绑包,而不需要初始前端源代码(sass、jade等文件)。在前端源代码/styles/makrup的每一次更改中,我的前端捆绑包都会不断地与我的构建系统重新构建,所以每次构建后输出捆绑包都是不同的。
- 如果我要为后端和前端创建通用的回购,那么前端源也将包含在回购中,我在生产服务器上不需要它们
- 如果我要为前端和后端创建两个独立的repo,那么我将如何同步实际的前端捆绑包和后端代码的实际版本,以及我将如何返回到项目的特定版本
我希望这篇文章写得很清楚,能理解我,我会向一些文档寻求任何建议或链接,这些文档可以为我澄清这些停顿。
如果我要为
frontend
和backend
创建两个独立的repo,那么我将如何同步实际的frontend
捆绑包和backend
代码的实际版本,以及我将如何返回到项目的特定版本?
这通常通过父repo来完成,父repo的任务是记录声明为子模块的frontend
和backend
的正确版本。
每次frontend
和backend
发生变化时,您的父回购git status
都会提到这些回购的SHA1发生了变化(即它们的gitlinks,主父回购索引中的特殊条目)
通过推送父repo(除了推送frontend
和backend
repo),您可以跟踪哪个版本的frontend
与哪个版本的backend
,并且您可以返回到项目的特定版本(通过父repo历史记录)。