节点文件结构#
遵循节点结构的最佳实践和标准能使您的节点更易于维护。当其他人需要处理代码时,这会很有帮助。
您的节点文件和目录结构取决于:
- 节点的复杂度
- 是否使用节点版本控制
- npm 包中包含的节点数量
必需文件和目录#
您的节点必须包含:
- 项目根目录下的
package.json
文件 - 这是所有 npm 模块的必备文件 nodes
目录 - 包含节点代码:credentials
目录 - 包含凭据代码。这些代码存放在单个凭据文件中。文件格式为<node-name>.credentials.ts
。例如MyNode.credentials.ts
模块化结构#
您可以选择将所有节点功能放在一个文件中,或者将其拆分到基础文件和其他模块中,然后由基础文件导入。除非您的节点非常简单,否则最佳实践是进行拆分。
一个基本模式是将操作分离出来。可以参考 HttpBin 起始节点作为示例。
对于更复杂的节点,n8n 推荐采用目录结构。可以参考 Airtable 节点 或 Microsoft Outlook 节点 作为示例。
actions
: 包含代表资源的子目录的目录- 每个子目录应包含两种类型的文件:
- 带有资源描述的索引文件(命名为
<resourceName>.resource.ts
或index.ts
) - 操作文件
<operationName>.operation.ts
。这些文件应有两个导出:操作的description
和一个execute
函数
methods
: 可选目录,用于存放动态参数的函数transport
: 包含通信实现的目录
版本控制#
如果您的节点有多个版本,并且您使用完整版本控制,这会使文件结构更加复杂。您需要为每个版本创建一个目录,同时需要一个设置默认版本的基础文件。有关处理版本的更多信息(包括版本控制的类型),请参阅节点版本控制。
决定一个包中包含多少节点#
在构建节点时有两种可能的设置方案:
- 一个 npm 包中包含一个节点
- 一个 npm 包中包含多个节点
n8n 支持这两种方式。如果包含多个节点,每个节点应该在 nodes
目录中有自己的独立目录。
编程式节点的最佳实践示例#
n8n 内置的 Airtable 节点 实现了模块化结构和版本控制,遵循了推荐模式。