Extending the Comfy Client
Comfy can be modified through an extensions mechanism. To add an extension you need to:
- Export
WEB_DIRECTORY from your Python module,
- Place one or more
.js files into that directory,
- Use
app.registerExtension to register your extension.
These three steps are below. Once you know how to add an extension, look
through the hooks available to get your code called,
a description of various Comfy objects you might need,
or jump straight to some example code snippets.
Exporting WEB_DIRECTORY
The Comfy web client can be extended by creating a subdirectory in your custom node directory, conventionally called js, and
exporting WEB_DIRECTORY - so your __init_.py will include something like:
WEB_DIRECTORY = "./js"
__all__ = ["NODE_CLASS_MAPPINGS", "NODE_DISPLAY_NAME_MAPPINGS", "WEB_DIRECTORY"]
Including .js files
All Javascript .js files will be loaded by the browser as the Comfy webpage loads. You don’t need to specify the file
your extension is in.
Only .js files will be added to the webpage. Other resources (such as .css files) can be accessed
at extensions/custom_node_subfolder/the_file.css and added programmatically.
That path does not include the name of the subfolder. The value of WEB_DIRECTORY is inserted by the server.
Registering an extension
The basic structure of an extension follows is to import the main Comfy app object, and call app.registerExtension,
passing a dictionary that contains a unique name,
and one or more functions to be called by hooks in the Comfy code.
A complete, trivial, and annoying, extension might look like this:
import { app } from "../../scripts/app.js";
app.registerExtension({
name: "a.unique.name.for.a.useless.extension",
async setup() {
alert("Setup complete!")
},
})