模块化web-app项目结构&版本控制

时间:2013-10-08 07:34:01

标签: git cakephp project-management gruntjs amd

我试图为CakePHP编写插件集合,并且在构建项目的各个部分时遇到一些麻烦。我知道之前可能已经问了几次,我在SO上找到了一些相关的主题,但没有真正令人满意的解决方案。

一些要求:

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

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

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

  • 为了检查兼容性,每个模块使用不同的版本标签会很不错。

我的问题:

  • 我应该如何处理版本控制?我用一个Git存储库进行了一些原型设计,结果令人不满意,特别是因为我只能为所有模块分配一个标签。 Git子模块是否可以去这里?

    我还可以为每个模块创建存储库,这看起来很麻烦,特别是因为对核心的更改可能需要更改依赖模块,这在同一个分支中是否有意义(或不是?)。

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

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

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

1 个答案:

答案 0 :(得分:0)

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

  

我应该如何处理版本控制?我用一个Git存储库进行了一些原型设计,结果令人不满意,特别是因为我只能为所有模块分配一个标签。 Git子模块是否可以去这里?

     

我也可以为每个模块创建repos,这看起来很麻烦,特别是因为对核心的更改可能需要更改依赖模块,这在同一分支中是否有意义(或不是?)。

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

有关此主题的更多信息:

  

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

如果JavaScript只适用于1个插件,只有1个插件,那么你应该把它放在插件的myplugin / webroot / js /文件夹中。因为它属于那里。如果您有多个插件使用的JavaSript,或者甚至是核心应用程序本身,请将它放在app / webroot / js文件夹中,因为当您作为新开发人员进入代码时更有意义。

请注意文档在http://book.cakephp.org/2.0/en/plugins.html#plugin-assets上说的内容。


如果您对我的“回答”仍有疑问,请在下面的评论中提问。我希望这会以某种方式帮助你。