利用シーン
- ノードクラス名の変更: ノードのクラス名を変更した場合(表示名の変更には代わりに
DISPLAY_NAMEを使用してください) - ノードの統合: 複数のノードが 1 つに統合された場合(例:
Load3DAnimationがLoad3Dに統合) - 入力のリファクタリング: バージョン間で入力名またはタイプが変更された場合
- タイプミスの修正: 既存のワークフローを壊さずにノード名を修正する場合
置換の登録場所
拡張機能のon_load ライフサイクルフック中に置換を登録します。カスタムノードパッケージ内に専用ファイル(例:node_replacements.py)を作成します:
完全な例
カスタムノードパッケージ内でノード置換を構造化する方法を示す完全な例は以下の通りです:コアの例
ComfyUI コアは組み込みノードの移行にノード置換を使用します。以下はcomfy_extras/nodes_replacements.py の実際の例です:
単純なノード統合
Load3DAnimation が Load3D に統合された場合:
タイプミスの修正
SDV_img2vid_Conditioning → SVD_img2vid_Conditioning のタイプミスを修正する場合:
デフォルト値付きの入力改名
ImageScaleBy を ResizeImageMaskNode に置換する場合:
Autogrow 入力マッピング
Autogrow(動的入力)を使用するノードの場合、ドット記法を使用します:NodeReplace パラメータ
| パラメータ | タイプ | 説明 |
|---|---|---|
new_node_id | str | 置換ノードのクラス名 |
old_node_id | str | 廃止されたノードのクラス名 |
old_widget_ids | list[str] | None | ウィジェット ID を相対インデックスにバインドする順序付きリスト |
input_mapping | list | None | 入力を旧ノードから新ノードにマッピングする方法 |
output_mapping | list | None | 出力を旧ノードから新ノードにマッピングする方法 |
入力マッピング
各入力マッピングエントリーは、入力が旧ノードから新ノードにどのように転送されるかを定義します。 旧入力からマッピング:出力マッピング
出力マッピングはインデックスベースの参照を使用します:ウィジェット ID バインディング
old_widget_ids フィールドは、ウィジェット ID を位置インデックスにマッピングします。ワークフロー JSON は ID ではなく位置によってウィジェット値を保存するため、これは必須です。
REST API
登録されたすべての置換を取得:フロントエンドの動作
ワークフローに廃止されたノードが含まれている場合、フロントエンドは以下を行います:GET /api/node_replacementsから置換情報を取得old_node_idに一致するノードを検出- ユーザーにアップグレードを促す
- 入力/出力マッピングを自動的に適用
- 接続とウィジェット値を保持