生命周期
Comfy 如何加载自定义节点
当 Comfy 启动时,它会扫描 custom_nodes
目录下的 Python 模块,并尝试加载它们。
如果模块导出了 NODE_CLASS_MAPPINGS
,它就会被视为自定义节点。
一个 Python 模块是包含
__init__.py
文件的目录。
模块会导出在 __init__.py
文件中 __all__
属性中列出的内容。init.py
当 Comfy 尝试导入模块时,会执行 __init__.py
文件。要让模块被识别为包含自定义节点定义,必须导出 NODE_CLASS_MAPPINGS
。如果导出了(并且导入过程中没有出错),模块中定义的节点就会在 Comfy 中可用。如果你的代码有错误,Comfy 会继续运行,但会报告该模块加载失败。所以请检查 Python 控制台!
一个非常简单的 __init__.py
文件如下所示:
NODE_CLASS_MAPPINGS
NODE_CLASS_MAPPINGS
必须是一个 dict
,将自定义节点的唯一名称(在整个 Comfy 安装中唯一)映射到对应的节点类。
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 子目录下。你可能还会看到这样做的代码。不要这样做。