baserCMSではコアパッケージに梱包して配布するプラグインを「コアプラグイン」と呼びます。
コアプラグインは特別な扱いとしてベンダープラグインとは区別されます。
コアプラグインとは別に、プラグイン管理画面では制御せずに、baserCMSコア側で動作制御を行うものを「コアパッケージ」と呼びます。これらのパッケージは、プラグイン管理の一覧には表示されません。
コアパッケージは現在次の4つとなります。
コアパッケージは次の設定に定義されています。
return [
'BcApp' => [
'core' => ['BaserCore', 'BcAdminThird', 'BcFront', 'BcInstaller'],
]
];
通常のプラグインは、キャメルケースのディレクトリ名としますが、コアプラグインのディレクトリ名は、特別にハイフン区切りとします。
ただし、プログラムコード上ではキャメルケースで記述します。
例)bc-blog、bc-mail、bc-custom-content
パッケージ構成 に記載しているとおり、baserCMSではモノレポによる統合的なパッケージ管理を採用しています。
子パッケージの composer.json
記述したパッケージは、monorepo-builder
により、親パッケージの composer.json
にまとめあげることができ、vendor
ディレクトリも親の vendor
で統合的に管理することができます。
そのため、子パッケージの composer.lock
と vendor
ディレクトリは利用しません。(.gitignore で除外済です)
パッケージを追加する場合は、子パッケージの composer.json
に記述します。
子パッケージの composer.json
を変更した場合は、次のコマンドを実行して親パッケージにまとめあげる必要があります。
vendor/bin/monorepo-builder merge
パッケージを実際に追加する際は、親パッケージの composer.json
に子パッケージの定義内容がまとめ上げられていることを前提として、親パッケージの composer.json に対してコマンドを実行します。
composer update
新しいコアプラグインを追加するには特別な設定が必要です。
/.gitignore
にてプラグイン本体の無視設定を解除し、シンボリックリンクの無視設定を追加します。
!/plugins/bc-blog
/webroot/bc_blog
/config/setting.php
の BcApp.corePlugins
にプラグイン名を記載します。
return [
'BcApp' => [
'corePlugins' => ['BcBlog']
]
];
baserCMSのインストールの際に一緒にインストールする場合は次の設定に追加します。
return [
'BcApp' => [
'defaultInstallCorePlugins' => ['BcBlog']
]
];
BaserCore の composer.json に依存関係を追加します。
これにより、インストーラーを実行した際に一緒に取得する事ができます。
# /plugins/baser-core/composer.json
{
"require": {
"baserproject/bc-custom-content": "^5.1",
}
}
Composer で個別に管理するため、読み取り専用のGitHubレポジトリを準備し、モノレポの設定ファイルに追加します。
// .github/workflows/split_monorepo.yml
jobs:
strategy:
matrix:
package:
-
local_path: 'bc-custom-content'
split_repository: 'bc-custom-content'
コアプラグインは独自にバージョンを持ちません。BaserCore と同一のバージョンとして認識されます。
そのため、VERSION.txt は不要です。
baserCMSは、アップデート時にアップデートスクリプトを準備しておくと、そのスクリプトを自動実行する仕組みとなっています。詳細については次のページを参照してください。
テーブルへのカラム追加や削除等、データベースの構造を変更した場合には、設置済のbaserCMSのアップデートに対応する為、「マイグレーションファイル」の準備が必要です。詳細については次のページを参照してください。