集成节点/Creating_nodes/Plan_your_node
Node 文件结构#
遵循节点结构的最佳实践和标准能让您的节点更易于维护。当其他开发人员需要参与代码开发时,这将非常有帮助。 节点的文件和目录结构取决于:
- 节点的复杂程度
- 是否使用节点版本控制
- npm 包中包含的节点数量
n8n 推荐使用 n8n-node 工具来创建符合预期的节点文件结构。您可以根据需要自定义生成的脚手架结构,以满足更复杂的需求。
必需文件和目录#
您的节点必须包含:
- 项目根目录下的
package.json文件(每个 npm 模块都需要此文件) - 存放节点代码的
nodes目录: - 存放凭据代码的
credentials目录。这些代码位于单个凭据文件中,文件名格式为<节点名称>.credentials.ts,例如MyNode.credentials.ts
模块化结构#
您可以选择将节点的所有功能放在一个文件中,或者将其拆分到基础文件和其他模块中,然后由基础文件导入这些模块。除非您的节点非常简单,否则拆分为多个模块是最佳实践。
一个基本的模式是将操作(operations)分离出来。可以参考 HttpBin 入门节点 作为示例。
对于更复杂的节点,n8n 推荐使用目录结构。可以参考 Airtable 节点 或 Microsoft Outlook 节点 作为示例。
actions:一个包含代表资源(resources)的子目录的目录。- 每个子目录应包含两种类型的文件:
- 包含资源描述的索引文件(命名为
<resourceName>.resource.ts或index.ts) - 用于操作(operations)的文件
<operationName>.operation.ts。这些文件应有两个导出:操作的description和一个execute函数。
methods:一个可选的目录,用于存放动态参数函数。transport:一个包含通信实现(communication implementation)的目录。
版本控制#
如果您的节点有多个版本,并且您正在使用完整版本控制(full versioning),这会使文件结构更加复杂。您需要为每个版本创建一个目录,同时还需要一个设置默认版本的基础文件。有关处理版本(包括版本控制类型)的更多信息,请参阅 节点版本控制。
决定在包中包含多少个节点#
构建节点时有两种可能的设置:
- 一个 npm 包中包含一个节点。
- 一个 npm 包中包含多个节点。
n8n 同时支持这两种方法。如果包含多个节点,每个节点都应在 nodes 目录中拥有独立的文件夹。
编程式节点的最佳实践示例#
n8n 内置的 Airtable 节点 采用模块化结构和版本控制机制,遵循推荐模式。