ucmitz を親パッケージとして、BaserCore、BcAdminThird など必要とするパッケージを CakePHP のプラグインとして開発し、子パッケージとして管理しています。
Gitでクローンした本体。親パッケージとして ucmitz のアプリケーションフレームを提供します。
baserCMSのコア(BaserCore)、デフォルトの管理画面テーマ(BcAdminThird)、デフォルトのフロントテーマ(BcFront)、そしてインストーラー(BcInstaller)は、CakePHPのプラグインとしての開発を前提とし、/plugins/
配下に配置する仕様としています。
BaserCore は、主にURLに紐づくルーティングと、ビジネスロジックを提供します。
baserCMSのコアパッケージと共にコアに梱包するいくつかのプラグインはコアプラグインとして、/plugins/
配下に配置する仕様としています。
その他のプラグインも同様に、CakePHPのプラグインとしての開発を前提とし、 /plugins/
配下内に配置します。
なお、コアパッケージ、コアテーマ以外のプラグインのロードは、 composer でのインストールは不要で、管理画面でプラグインをインストールする事で利用可能となります。
コアパッケージ、コアテーマ、コアプラグインについては、ハイフン区切り(dasherize)とし、その他のプラグインについては、アッパーキャメルケースとします。
例)
コア:baser-core / bc-admin-third / bc-blog
その他:BcSpaSample
複数のパッケージを統合的に管理するためにPHP用のモノレポ 「monorepo-builder」 を利用しています。
リリース時に次のレポジトリに分割してコミットされます。
子パッケージの composer.json
記述したパッケージは、monorepo-builder
により、親パッケージの composer.json
にまとめあげることができ、vendor
ディレクトリも親の vendor
で統合的に管理することができます。
そのため、子パッケージの composer.lock
と vendor
ディレクトリは利用しません。(.gitignore で除外済です)
子パッケージの composer.json
を変更した場合は、次のコマンドを実行して親パッケージにまとめあげる必要があります。
vendor/bin/monorepo-builder merge
モノレポを使うことで、GitHub 上のパッケージごとのレポジトリへ、一括でリリースすることができます。
ただし、子パッケージは、読み取り専用の扱いとします。
子パッケージのリリースを行う場合は、次のコマンドを実行します。
vendor/bin/monorepo-builder release [バージョン番号]