Skip to content

Commit

Permalink
コアプラグインの開発を追加
Browse files Browse the repository at this point in the history
  • Loading branch information
ryuring committed Sep 24, 2023
1 parent 3057e94 commit dc15995
Showing 1 changed file with 95 additions and 5 deletions.
100 changes: 95 additions & 5 deletions 5/core_plugin/index.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,41 @@
# コアプラグインの開発

{% include looking_for.html %}
baserCMSではコアパッケージに梱包して配布するプラグインを「コアプラグイン」と呼びます。
コアプラグインは特別な扱いとしてベンダープラグインとは区別されます。

## Composer によるパッケージの追加
## コアパッケージ
コアプラグインとは別に、プラグイン管理画面では制御せずに、baserCMSコア側で動作制御を行うものを「コアパッケージ」と呼びます。これらのパッケージは、プラグイン管理の一覧には表示されません。

コアパッケージは現在次の4つとなります。
- BaserCore
- BcInstaller
- BcFront
- BcAdminThird

コアパッケージは次の設定に定義されています。
```php
return [
'BcApp' => [
'core' => ['BaserCore', 'BcAdminThird', 'BcFront', 'BcInstaller'],
]
];
```

## ディレクトリ名
通常のプラグインは、キャメルケースのディレクトリ名としますが、コアプラグインのディレクトリ名は、特別にハイフン区切りとします。
ただし、プログラムコード上ではキャメルケースで記述します。

例)bc-blog、bc-mail、bc-custom-content

## Composer による管理
### 統合的なパッケージ管理
[パッケージ構成](../package/index) に記載しているとおり、baserCMSではモノレポによる統合的なパッケージ管理を採用しています。

子パッケージの `composer.json` 記述したパッケージは、`monorepo-builder` により、親パッケージの `composer.json` にまとめあげることができ、`vendor` ディレクトリも親の `vendor` で統合的に管理することができます。

そのため、子パッケージの `composer.lock``vendor` ディレクトリは利用しません。(.gitignore で除外済です)

### 子パッケージの composer.json の構成をまとめあげる
### 子パッケージの構成をまとめあげる
パッケージを追加する場合は、子パッケージの `composer.json` に記述します。

子パッケージの `composer.json` を変更した場合は、次のコマンドを実行して親パッケージにまとめあげる必要があります。
Expand All @@ -19,9 +44,74 @@
vendor/bin/monorepo-builder merge
```

### パッケージを追加する
パッケージを実施に追加する際は、親パッケージの `composer.json` に子パッケージの定義内容がまとめ上げられていることを前提として、親パッケージの composer.json に対してコマンドを実行します。
### パッケージの追加
パッケージを実際に追加する際は、親パッケージの `composer.json` に子パッケージの定義内容がまとめ上げられていることを前提として、親パッケージの composer.json に対してコマンドを実行します。

```shell
composer update
```

## 新しいコアプラグインの追加
新しいコアプラグインを追加するには特別な設定が必要です。

### 無視設定の変更
`/.gitignore` にてプラグイン本体の無視設定を解除し、シンボリックリンクの無視設定を追加します。
```shell
!/plugins/bc-blog
/webroot/bc_blog
```

### コアプラグインの定義
`/config/setting.php``BcApp.corePlugins` にプラグイン名を記載します。
```php
return [
'BcApp' => [
'corePlugins' => ['BcBlog']
]
];
```

### 初期インストール設定
baserCMSのインストールの際に一緒にインストールする場合は次の設定に追加します。
```php
return [
'BcApp' => [
'defaultInstallCorePlugins' => ['BcBlog']
]
];
```

### BaserCore に依存関係を追加
BaserCore の composer.json に依存関係を追加します。
これにより、インストーラーを実行した際に一緒に取得する事ができます。

```json
# /plugins/baser-core/composer.json
{
"require": {
"baserproject/bc-custom-content": "^5.1",
}
}
```



### モノレポの準備
Composer で個別に管理するため、読み取り専用のGitHubレポジトリを準備し、モノレポの設定ファイルに追加します。

```yml
// .github/workflows/split_monorepo.yml
jobs:
strategy:
matrix:
package:
-
local_path: 'bc-custom-content'
split_repository: 'bc-custom-content'
```
## コアプラグインのバージョン
コアプラグインは独自にバージョンを持ちません。baserCore と同一のバージョンとして認識されます。

0 comments on commit dc15995

Please sign in to comment.