メインコンテンツへスキップ
このガイドでは、非推奨となったモンキーパッチアプローチから、新しいコンテキストメニュー拡張 API への移行を支援します。 LGraphCanvas.prototype.getCanvasMenuOptions および nodeType.prototype.getExtraMenuOptions をモンキーパッチする従来のアプローチは非推奨となりました:
ブラウザのコンソールに非推奨警告が表示される場合は、拡張機能が旧 API を使用しているため、移行が必要です。

キャンバスメニューの移行

従来のアプローチ(非推奨)

従来のアプローチでは、拡張機能のセットアップ中にプロトタイプを変更していました:

新しいアプローチ(推奨)

新しいアプローチでは、専用の拡張フックを使用します:

主な違い

ノードメニューの移行

従来のアプローチ(非推奨)

従来のアプローチでは、ノードタイプのプロトタイプを変更していました:

新しいアプローチ(推奨)

新しいアプローチでは、専用の拡張フックを使用します:

主な違い

一般的なパターン

条件付きメニュー項目

どちらのアプローチも条件付き項目をサポートしますが、新しい API の方が簡潔です:

セパレーターの追加

セパレーターの追加方法は、どちらのアプローチでも同じです:

サブメニューの作成

サブメニューを作成する推奨方法は、宣言的な submenu プロパティを使用することです:
この宣言的アプローチはより簡潔で、ComfyUI コードベース全体で使用されているパターンと一致します。
has_submenu: true および new LiteGraph.ContextMenu() を使用したコールバックベースのアプローチもサポートされていますが、保守性を高めるために宣言的な submenu プロパティが推奨されます。

状態へのアクセス

トラブルシューティング

旧 API の使用箇所を特定する方法

コード内で以下のパターンを探してください:

非推奨警告の理解

コンソールに以下の警告が表示された場合:
拡張機能が旧アプローチを使用しており、移行が必要です。

移行成功の確認

移行後:
  1. setup() および beforeRegisterNodeDef() からすべてのプロトタイプ変更を削除
  2. getCanvasMenuItems() および/または getNodeMenuItems() フックを追加
  3. メニュー項目が正しく表示されることをテスト
  4. コンソールに非推奨警告が表示されないことを確認

移行の完全な例

移行前:
移行後:

追加リソース