Tip

このドキュメントはAIによって翻訳されました。不正確な情報については、英語版をご参照ください

プラグイン開発の概要

NocoBaseはマイクロカーネルアーキテクチャを採用しており、コアはプラグインのライフサイクル管理、依存関係管理、そして基本的な機能のカプセル化のみを担当しています。すべてのビジネス機能はプラグインとして提供されます。そのため、プラグインの構成、ライフサイクル、管理方法を理解することが、NocoBaseをカスタマイズする上での最初のステップとなります。

コアコンセプト

  • プラグアンドプレイ:必要に応じてプラグインをインストール、有効化、または無効化できます。コードを修正することなく、ビジネス機能を柔軟に組み合わせることが可能です。
  • フルスタック統合:プラグインは通常、サーバーサイドとクライアントサイドの両方の実装を含んでおり、データロジックとUIインタラクションの一貫性を保証します。

プラグインの基本構造

各プラグインは独立したnpmパッケージであり、通常、以下のようなディレクトリ構造を持っています。

plugin-hello/
├─ package.json          # プラグイン名、依存関係、およびNocoBaseプラグインのメタ情報
├─ client.js             # フロントエンドのビルド成果物。ランタイムで読み込まれます。
├─ server.js             # サーバーサイドのビルド成果物。ランタイムで読み込まれます。
├─ src/
  ├─ client/            # クライアントサイドのソースコード。ブロック、アクション、フィールドなどを登録できます。
  └─ server/            # サーバーサイドのソースコード。リソース、イベント、コマンドなどを登録できます。

ディレクトリの慣例と読み込み順序

NocoBaseは、デフォルトで以下のディレクトリをスキャンしてプラグインを読み込みます。

my-nocobase-app/
├── packages/
   └── plugins/          # ソースコード開発中のプラグイン(最も優先度が高い)
└── storage/
    └── plugins/          # コンパイル済みのプラグイン(例:アップロードまたは公開されたプラグイン)
  • packages/plugins:ローカル開発用のプラグインディレクトリで、リアルタイムコンパイルとデバッグをサポートしています。
  • storage/plugins:コンパイル済みのプラグイン(商用版やサードパーティ製プラグインなど)が格納されます。

プラグインのライフサイクルと状態

プラグインは通常、以下のフェーズを経ます。

  1. 作成(create):CLI を使ってプラグインテンプレートを作成します。
  2. プル(pull):プラグインパッケージをローカルにダウンロードしますが、まだデータベースには書き込まれていません。
  3. 有効化(enable):初回有効化時に「登録 + 初期化」が実行されます。再度有効化する際は、ロジックのみが読み込まれます。
  4. 無効化(disable):プラグインの実行を停止します。
  5. 削除(remove):システムからプラグインを完全に削除します。
Tip
  • pull はプラグインパッケージのダウンロードのみを担当し、実際のインストールプロセスは初回 enable 時にトリガーされます。
  • プラグインが pull されただけで有効化されていない場合、そのプラグインは読み込まれません。

CLIコマンド例

# 1. プラグインのスケルトンを作成
yarn pm create @my-project/plugin-hello

# 2. プラグインパッケージをプル(ダウンロードまたはリンク)
yarn pm pull @my-project/plugin-hello

# 3. プラグインを有効化(初回有効化時に自動でインストールされます)
yarn pm enable @my-project/plugin-hello

# 4. プラグインを無効化
yarn pm disable @my-project/plugin-hello

# 5. プラグインを削除
yarn pm remove @my-project/plugin-hello

プラグイン管理画面

ブラウザでプラグインマネージャーにアクセスすると、プラグインを直感的に表示・管理できます。

デフォルトURL: http://localhost:13000/admin/settings/plugin-manager

プラグインマネージャー