先日「Craft Generator」についてのアナウンスがありました。
これは Craft 4 向けプラグインやモジュールの作成時にひな形をサクッと生成できる composer パッケージで、Craft の CLI コマンドとして利用できます。
Craft Generator | Craft CMS
https://craftcms.com/blog/craft-generator
以前「Craft CMS のプラグインを作ってみよう」で紹介した方法は Craft 3 までしか対応しておらず、自前でひな形を用意するのがちょっと面倒に感じていた自分にとって待望のリリースとなります。
そこで、今回は Craft Generator の導入方法や基本的な使い方についてご紹介したいと思います。
これは Craft CMS Advent Calendar 2022 18日目の記事です。
Craft Generator の導入
Craft Generator を利用するには、Craft 4.3.5 以上であることが条件となります。
それ未満の環境であれば、事前にアップデートしてください。
また、リリース直後ということもあり頻繁にアップデートされているため、公式リポジトリもチェックしましょう。
craftcms/generator: Scaffold new Craft CMS plugins, modules, and system components from the CLI
https://github.com/craftcms/generator
既存の Craft CMS インストールディレクトリでパッケージをインストールします。
composer require craftcms/generator --dev
問題なくインストールできていれば、次のコマンドで詳細を確認できます。
./craft help make
composer.json の微調整
Craft CMS のインストールディレクトリ直下にある composer.json に下記を追加します。"require-dev":
と "autoload":
の間あたりに追記される想定です。
"repositories": [
{
"type": "path",
"url": "plugins/*",
"options": {
"symlink": true
}
}
],
composer require
時に pluigns/
配下のプラグインを参照するための記述で、独自プラグインの複数設置にも対応可能です。
プラグインのひな形を作ってみる
では、実際にプラグインのひな形を作ってみましょう。次のコマンドを実行します。
./craft make plugin
プラグイン名など、順を追って入力していきます。
それぞれの項目については、下記を参考にしてください。ただし、Plugin handle
などは実際の入力内容に応じて初期値が変化します。
項目 | 説明 | 入力サンプル |
---|---|---|
Plugin name | プラグイン名 | Sample Plugin |
Developer name | 開発者名 | dreamseeker |
Plugin handle | プラグインのハンドル | sample-plugin(初期値) |
Plugin location | プラグインの生成先 | plugins/sample-plugin(初期値) |
Composer package name | Composer のパッケージ名 | dreamseeker/craft-sample-plugin(初期値) |
Plugin description | プラグインの説明文(日本語入力は不可) | This is sample plugin.(任意) |
How should the plugin be licensed? | ライセンス形態(mit または craft または ? ) | mit |
Support email | サポート用のメールアドレス | (任意) |
GitHub repo URL | プラグインのリポジトリ URL | (任意) |
Minimum PHP version | PHP の最小バージョン | 8.0.2 |
Minimum Craft CMS version | Craft CMS の最小バージョン | 4.3.5 |
Plugin class name | プラグインのクラス名(パスカルケース) | Plugin(初期値) |
Root namespace | プラグインルートの名前空間 | dreamseeker\craftsampleplugin(初期値) |
Should the plugin have settings? | プラグインの設定画面が必要か? | no(初期値) |
Include ECS? | Easy Coding Standard パッケージを含めるか? | yes(初期値) |
Include PHPStan? | PHPStan パッケージを含めるか? | yes(初期値) |
プラグインの生成が終わったら、パッケージをインストールします。
composer require dreamseeker/craft-sample-plugin
次に、管理画面の 設定 > プラグイン
、または、CLI コマンドでプラグインをインストールしてください。
./craft plugin/install sample-plugin
機能を追加したくなったら
Craft Generator は、執筆時点で次のシステムコンポーネントの生成に対応しています。
- Active Record models
- Asset bundles
- CLI commands
- Element actions
- Element condition rules
- Element exporters
- Element types
- Field types
- Filesystem types
- Generators
- Models
- Queue jobs
- Services
- Utilities
- Validators
- Web controllers
そのため、既存のプラグインやモジュールに機能を追加したい場合も make
コマンドを利用できます。
既存プラグインにサービスを追加してみる
先ほど作成した Sample Plugin にサービスを追加してみましょう。--plugin=
に続けて対象プラグインのハンドルを指定します。
./craft make service --plugin=sample-plugin
名称と名前空間を問われるので、任意の値を入力します。
なお、システムコンポーネントの追加はインストールディレクトリの vendor/
配下にデータが存在する前提となりますので、独自プラグインを対象とする場合は事前に composer require
でパッケージをインストール(vendor/
配下にシンボリックリンクを生成)しておきましょう。
パッケージがインストールされていないと次のようなエラーになります。
Exception 'craft\errors\InvalidPluginException' with message 'No plugin exists with the handle "simple-plugin".'
最後に
今回は Craft Generator でプラグインのひな形を作成してみました。
システム本体の開発元によって提供されているため、将来的に機能が拡張したり Craft 5 に対応したりする際も従来より容易にできそうで、嬉しいですね。