Skip to content

节点文件结构#

遵循节点结构的最佳实践和标准能使您的节点更易于维护。当其他人需要处理代码时,这会很有帮助。

您的节点文件和目录结构取决于:

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

必需文件和目录#

您的节点必须包含:

  • 项目根目录下的 package.json 文件 - 这是所有 npm 模块的必备文件
  • nodes 目录 - 包含节点代码:
    • 该目录必须包含基础文件,格式为 <node-name>.node.ts。例如 MyNode.node.ts
    • n8n 建议包含一个 codex 文件,用于存储节点的元数据。codex 文件名必须与节点基础文件名匹配。例如,如果节点基础文件名为 MyNode.node.ts,则 codex 文件名应为 MyNode.node.json
    • nodes 目录可以包含其他文件和子目录,包括版本目录,以及将节点代码拆分到多个文件以实现模块化结构
  • credentials 目录 - 包含凭据代码。这些代码存放在单个凭据文件中。文件格式为 <node-name>.credentials.ts。例如 MyNode.credentials.ts

模块化结构#

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

一个基本模式是将操作分离出来。可以参考 HttpBin 起始节点作为示例。

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

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

版本控制#

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

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

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

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

n8n 支持这两种方式。如果包含多个节点,每个节点应该在 nodes 目录中有自己的独立目录。

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

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