メインコンテンツへスキップ

Comfy によるカスタムノードの読み込み方法

Comfy 起動時、custom_nodes ディレクトリ内の Python モジュールをスキャンし、読み込みを試みます。 モジュールが NODE_CLASS_MAPPINGS をエクスポートしている場合、カスタムノードとして扱われます。
Python モジュールとは、__init__.py ファイルを含むディレクトリのことです。 モジュールは、__init__.py で定義された __all__ 属性にリストされた内容をエクスポートします。

init.py

__init__.py は、Comfy がモジュールのインポートを試みるときに実行されます。カスタムノード定義を含むモジュールとして認識されるためには、NODE_CLASS_MAPPINGS をエクスポートする必要があります。エクスポートされており(かつインポート中にエラーが発生しなければ)、モジュール内で定義されたノードが Comfy で利用可能になります。コードにエラーがある場合、Comfy は続行しますが、そのモジュールの読み込み失敗を報告します。そのため、Python コンソールを確認してください! 非常にシンプルな __init__.py ファイルは以下のようになります:
from .python_file import MyCustomNode
NODE_CLASS_MAPPINGS = { "My Custom Node" : MyCustomNode }
__all__ = ["NODE_CLASS_MAPPINGS"]

NODE_CLASS_MAPPINGS

NODE_CLASS_MAPPINGS は、カスタムノード名(Comfy インストール全体で一意である必要があります)を対応するノードクラスにマップする dict でなければなりません。

NODE_DISPLAY_NAME_MAPPINGS

__init__.pyNODE_DISPLAY_NAME_MAPPINGS をエクスポートすることもできます。これは、同じ一意の名前をノードの表示名にマップします。 NODE_DISPLAY_NAME_MAPPINGS が提供されていない場合、Comfy は一意の名前を表示名として使用します。

WEB_DIRECTORY

クライアント側コードをデプロイする場合は、JavaScript ファイルが見つかるパス(モジュールからの相対パス)もエクスポートする必要があります。これらをカスタムノード内の js という名前のサブディレクトリに配置するのが一般的です。
.js ファイルのみ が提供されます;.css や他のタイプをこの方法でデプロイすることはできません
Comfy の以前のバージョンでは、__init__.py が JavaScript ファイルを Comfy メインの web サブディレクトリにコピーする必要がありました。これを行うコード仍未見かけることがあります。行わないでください。