Skip to main content

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 ファイルは以下のようになります:

NODE_CLASS_MAPPINGS

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

NODE_DISPLAY_NAME_MAPPINGS

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

WEB_DIRECTORY

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