メインコンテンツまでスキップ

アーキテクチャ

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"
}