Git 模块化web应用程序项目结构和;版本控制

Git 模块化web应用程序项目结构和;版本控制,git,cakephp,project-management,gruntjs,amd,Git,Cakephp,Project Management,Gruntjs,Amd,我试图为CakePHP编写一个插件集合,但在构建项目的各个部分时遇到了一些问题。我知道这可能已经被问过好几次了,我发现了一些相关的话题,但没有真正令人满意的解决方案 一些要求: 不同的模块是松散耦合的,但是,它们都依赖于一个核心模块 某些模块实际上会相互交互,例如,如果模块发现仪表板模块存在,则可以注册仪表板页面 核心模块提供PHP基类以及其他模块可以继承/使用的RequireJS模块 为了检查兼容性,最好每个模块有不同的版本标签 我的问题: 我应该如何进行版本控制?我用一个Git存储库做

我试图为CakePHP编写一个插件集合,但在构建项目的各个部分时遇到了一些问题。我知道这可能已经被问过好几次了,我发现了一些相关的话题,但没有真正令人满意的解决方案

一些要求:

  • 不同的模块是松散耦合的,但是,它们都依赖于一个核心模块

  • 某些模块实际上会相互交互,例如,如果模块发现仪表板模块存在,则可以注册仪表板页面

  • 核心模块提供PHP基类以及其他模块可以继承/使用的RequireJS模块

  • 为了检查兼容性,最好每个模块有不同的版本标签

我的问题:

  • 我应该如何进行版本控制?我用一个Git存储库做了一些原型设计,结果有点不令人满意,特别是因为我只能为所有模块分配一个标记。Git子模块是这里的发展方向吗

    我还可以为每个模块创建回购协议,这似乎很麻烦,特别是因为对核心模块的更改可能需要对从属模块进行更改,这对在同一分支中执行(或不执行?)是有意义的

  • 我应该把Javascript代码放在哪里?由于大多数模块将依赖于一些核心RequireJS模块,因此将它们放在一个地方并让Grunt将缩小的版本分发到各自的CakePHP插件Javascript位置是有意义的

    这自然会给SCM带来一些问题


我对这种结构真的没有任何经验-这里的一般方法是什么?

这只是我的方法,我希望它能有所帮助。

我应该如何进行版本控制?我用一个Git存储库做了一些原型设计,结果有点不令人满意,特别是因为我只能为所有模块分配一个标记。Git子模块是这里的发展方向吗

我还可以为每个模块创建回购协议,这似乎很麻烦,特别是因为对核心模块的更改可能需要对从属模块进行更改,这对在同一分支中执行(或不执行?)是有意义的

我为每个模块创建一个新的回购协议。在CakePHP中,这些被称为插件。插件对于日志查看器或您使用的基本工具非常有用。您可以使用composer来安装插件,这使得在本地测试后很容易更新应用程序。此外,我工作的公司也使用这种方法。唯一的区别是,我们将插件存储库设置为私有而不是公共,因为我们不希望世界使用该代码,因为它是一个非常私有的CRM应用程序

有关此主题的更多信息:

  • 文件:
  • 作曲家:
  • 插件示例:
我应该把Javascript代码放在哪里?由于大多数模块将依赖于一些核心RequireJS模块,因此将它们放在一个地方并让Grunt将缩小的版本分发到各自的CakePHP插件Javascript位置是有意义的

如果JavaScript仅用于1个插件,并且仅用于1个插件,那么您应该将其放在插件的myplugin/webroot/js/文件夹中。因为它属于那里。当您有几个插件甚至核心应用程序本身使用的JavaSript时,请将其放在app/webroot/js文件夹中,因为当您作为一名新开发人员进入代码时,这更有意义

请注意文档中的说明



如果你对我的“答案”还有一些问题,请在下面的评论中提问。我希望这对您有所帮助。

您可以始终使用一个存储库,以后再拆分它们。请注意,插件有一个webroot文件夹(即插件的js应该在插件中)。您不能将核心应用程序创建为标准的CakePHP应用程序,将CakePHP作为Git子模块,并将模块构建为插件吗?这就是我要做的(过去也是如此)。