アーキテクチャ
metatellプラグインシステムの技術的な詳細とアーキテクチャについて解説します。
Module Federation
metatellは@module-federation/enhancedを使用して、プラグインを動的にロードします。各プラグインはユニークなUUID(VERSION_ID)を持ち、ビルド時に以下の形式でエクスポートされます:
// federationConfig.js
{
name: process.env.VERSION_ID,
filename: "remoteEntry.js",
exposes: {
"./ComponentName": "./src/components/ComponentName"
}
}
リモートエントリ
プラグインはビルド後、remoteEntry.jsファイルとして公開され、metatellクライアントが実行時にロードします。
メタデータ構造
各プラグインはmetadata.jsonで定義されます:
| 項目 | 説明 | 必須 |
|---|---|---|
name | プラグインの名前 (package.jsonから取得) | ✓ |
version | プラグインのバージョン(package.jsonから取得) | ✓ |
description | プラグインの説明(package.jsonから取得) | ✓ |
type | プラグインの種類(テンプレートで定義済み) | ✓ |
versionId | プラグインの一意識別子(UUID) | ✓ |
{
"name": "my-plugin",
"version": "1.0.0",
"description": "カスタムプラグイン",
"type": "CustomOverlay",
"versionId": "12345678-1234-1234-1234-123456789abc"
}