コマンド
NocoBase では、コマンドはアプリケーションやプラグインに関連する操作をコマンドラインで実行するために使われます。例えば、システムタスクの実行、マイグレーションや同期操作、設定の初期化、あるいは実行中のアプリケーションインスタンスとの連携などに利用できます。開発者はプラグイン用にカスタムコマンドを定義し、app オブジェクトを通じて登録できます。これらのコマンドはCLIで nocobase <command> の形式で実行します。
コマンドの種類
NocoBase では、コマンドの登録方法は以下の2種類に分けられます。
動的コマンド
app.command() を使ってプラグインコマンドを定義します。これらのコマンドは、プラグインが有効化されてから実行できます。コマンドファイルはプラグインディレクトリ内の src/server/commands/*.ts に配置してください。
示例
説明
app.command('echo'):echoという名前のコマンドを定義します。.option('-v, --version'):コマンドにオプションを追加します。.action():コマンドの実行ロジックを定義します。app.version.get():現在のアプリケーションバージョンを取得します。
コマンドの実行
静的コマンド
Application.registerStaticCommand() を使って登録します。静的コマンドはプラグインを有効化しなくても実行でき、インストール、初期化、マイグレーション、デバッグなどのタスクに適しています。プラグインクラスの staticImport() メソッド内で登録します。
示例
コマンドの実行
説明
Application.registerStaticCommand()は、アプリケーションがインスタンス化される前にコマンドを登録します。- 静的コマンドは通常、アプリケーションやプラグインの状態に依存しないグローバルなタスクを実行するために使われます。
コマンドAPI
コマンドオブジェクトは、コマンドの実行コンテキストを制御するための3つのオプションのヘルパーメソッドを提供します。
設定の説明
-
ipc()
デフォルトでは、コマンドは新しいアプリケーションインスタンスで実行されます。
ipc()を有効にすると、コマンドはプロセス間通信(IPC)を通じて現在実行中のアプリケーションインスタンスと連携します。これは、キャッシュの更新や通知の送信といったリアルタイム操作コマンドに適しています。 -
auth()
コマンド実行前にデータベース設定が利用可能かチェックします。
データベース設定が誤っているか、接続に失敗した場合、コマンドはそれ以上実行されません。データベースへの書き込みや読み取りを伴うタスクでよく使われます。 -
preload()
コマンド実行前にアプリケーション設定をプリロードします。これはapp.load()の実行に相当します。
設定やプラグインのコンテキストに依存するコマンドに適しています。
その他のAPIメソッドについては、AppCommand を参照してください。

