Skip to content

节点文件结构#

在节点结构中遵循最佳实践和标准使您的节点更易于维护。如果其他人需要使用代码,这会很有帮助。

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

  • 您节点的复杂性。
  • 是否使用节点版本控制。
  • 您在 npm 包中包含多少个节点。

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

必需的文件和目录#

您的节点必须包括:

  • 项目根目录下的 package.json 文件。每个 npm 模块都需要这个。
  • 一个 nodes 目录,包含您节点的代码:
    • 此目录必须包含基础文件,格式为 <node-name>.node.ts。例如,MyNode.node.ts
    • n8n 建议包含一个代码文件,包含您节点的元数据。代码文件名必须与节点基础文件名匹配。例如,给定名为 MyNode.node.ts 的节点基础文件,代码名称为 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。这些文件应该有两个导出:操作的 descriptionexecute 函数。
  • methods:可选目录,包含动态参数函数。
  • transport:包含通信实现的目录。

版本控制#

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

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

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

  • 一个 npm 包中有一个节点。
  • 单个 npm 包中有多个节点。

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

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

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