私は CakePHP 用のプラグインのコレクションを作成しようとしていますが、プロジェクトのさまざまな部分を構成するのに問題があります。これはおそらく以前に数回尋ねられたことを知っており、SOに関する関連トピックをいくつか見つけましたが、本当に満足のいく解決策はありません.
いくつかの要件:
さまざまなモジュールが疎結合されていますが、それらはすべてコアモジュールに依存しています。
一部のモジュールは実際に相互に対話します。たとえば、ダッシュボードモジュールが存在することがわかった場合、モジュールはダッシュボード ページを登録できます。
コアモジュールは、PHP 基本クラスと、他のモジュールが継承/使用できる RequireJS モジュールを提供します。
互換性を確認するために、モジュールごとに異なるバージョン タグを使用すると便利です。
私の問題:
バージョン管理にはどのようにアプローチすればよいですか? 1 つの Git リポジトリでプロトタイピングを行いましたが、特にすべてのモジュールに 1 つのタグしか割り当てることができなかったため、満足のいくものではありませんでした。Git サブモジュールはここに行く方法ですか?
すべてのモジュールのリポジトリを作成することもできますが、これは面倒に思えます。特に、コアへの変更には依存モジュールの変更が必要になる可能性があり、同じブランチで行うのが理にかなっています (またはしないでください)。
Javascript コードはどこに配置すればよいですか? ほとんどのモジュールはいくつかのコアRequireJS モジュールに依存するため、それらを 1 つの場所に保持し、Grunt が縮小バージョンをそれぞれの CakePHP-Plugin Javascript の場所に配布できるようにすることは理にかなっています。
これは当然、SCM でいくつかの問題を引き起こします。
私はこの種の構造についてまったく経験がありません - ここでの一般的なアプローチは何ですか?