Skip to content

节点版本控制#

n8n 支持节点版本控制。您可以通过引入新版本对现有节点进行修改,而不会破坏现有行为。

请注意 n8n 决定加载哪个节点版本的规则:

  • 如果用户使用版本 1 构建并保存了工作流,即使您创建并发布了该节点的版本 2,n8n 在该工作流中仍会继续使用版本 1。
  • 当用户创建新工作流并浏览节点时,n8n 总是加载该节点的最新版本。

节点样式限制版本控制类型

如果您使用声明式样式构建节点,则无法使用完整版本控制功能。

轻量级版本控制#

此功能适用于所有节点类型。

单个节点可以包含多个版本,允许在不重复代码的情况下进行小版本更新。要使用此功能:

  1. 将主 version 参数改为数组,并添加您的版本号(包括现有版本)。
  2. 然后您可以在任何对象的 displayOptions 中使用 @version 访问版本参数(用于控制 n8n 在哪些版本下显示该对象)。您也可以通过函数查询版本:const nodeVersion = this.getNode().typeVersion;

例如,假设您想为声明式节点教程中的 NasaPics 节点添加版本控制,并配置一个资源使其仅在节点版本 2 中显示。在您的 NasaPics.node.ts 基础文件中:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
{
    displayName: 'NASA Pics',
    name: 'NasaPics',
    icon: 'file:nasapics.svg',
    // 列出可用版本
    version: [1,2,3],
    // 更多基础参数
    properties: [
        // 添加一个仅在版本2显示的资源
        {
            displayName: 'Resource name',
            // 更多资源参数
            displayOptions: {
                show: {
                    '@version': 2,
                },
            },
        },
    ],
}

完整版本控制#

这不适用于声明式风格的节点。

例如,可以参考 Mattermost 节点

完整版本控制摘要:

  • 基础节点文件应继承 NodeVersionedType 而非 INodeType
  • 基础节点文件应包含描述信息,包括 defaultVersion(通常是最新版本)、其他基本节点元数据(如名称)以及版本列表。它不应包含任何节点功能
  • n8n 推荐使用 v1v2 等作为版本文件夹名称