N8N中文教程
集成节点/Creating_nodes/Plan_your_node

Node 文件结构#

遵循节点结构的最佳实践和标准能让您的节点更易于维护。当其他开发人员需要参与代码开发时,这将非常有帮助。 节点的文件和目录结构取决于:

  • 节点的复杂程度
  • 是否使用节点版本控制
  • npm 包中包含的节点数量

n8n 推荐使用 n8n-node 工具来创建符合预期的节点文件结构。您可以根据需要自定义生成的脚手架结构,以满足更复杂的需求。

必需文件和目录#

您的节点必须包含:

  • 项目根目录下的 package.json 文件(每个 npm 模块都需要此文件)
  • 存放节点代码的 nodes 目录:
    • 该目录必须包含基础文件,格式为 <节点名称>.node.ts,例如 MyNode.node.ts
    • n8n 建议包含代码索引文件,其中包含节点的元数据。代码索引文件名必须与节点基础文件名匹配,例如基础文件名为 MyNode.node.ts 时,代码索引文件应命名为 MyNode.node.json
    • nodes 目录可包含其他文件和子目录,包括版本控制目录,以及通过多文件拆分节点代码形成的模块化结构
  • 存放凭据代码的 credentials 目录。这些代码位于单个凭据文件中,文件名格式为 <节点名称>.credentials.ts,例如 MyNode.credentials.ts

模块化结构#

您可以选择将节点的所有功能放在一个文件中,或者将其拆分到基础文件和其他模块中,然后由基础文件导入这些模块。除非您的节点非常简单,否则拆分为多个模块是最佳实践。

一个基本的模式是将操作(operations)分离出来。可以参考 HttpBin 入门节点 作为示例。

对于更复杂的节点,n8n 推荐使用目录结构。可以参考 Airtable 节点Microsoft Outlook 节点 作为示例。

  • actions:一个包含代表资源(resources)的子目录的目录。
    • 每个子目录应包含两种类型的文件:
    • 包含资源描述的索引文件(命名为 <resourceName>.resource.tsindex.ts
    • 用于操作(operations)的文件 <operationName>.operation.ts。这些文件应有两个导出:操作的 description 和一个 execute 函数。
  • methods:一个可选的目录,用于存放动态参数函数。
  • transport:一个包含通信实现(communication implementation)的目录。

版本控制#

如果您的节点有多个版本,并且您正在使用完整版本控制(full versioning),这会使文件结构更加复杂。您需要为每个版本创建一个目录,同时还需要一个设置默认版本的基础文件。有关处理版本(包括版本控制类型)的更多信息,请参阅 节点版本控制

决定在包中包含多少个节点#

构建节点时有两种可能的设置:

  • 一个 npm 包中包含一个节点。
  • 一个 npm 包中包含多个节点。

n8n 同时支持这两种方法。如果包含多个节点,每个节点都应在 nodes 目录中拥有独立的文件夹。

编程式节点的最佳实践示例#

n8n 内置的 Airtable 节点 采用模块化结构和版本控制机制,遵循推荐模式。