跳到主要内容

节点版本管理#

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

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

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

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

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

轻量版本控制#

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

单个节点可包含多个版本,实现小幅版本迭代而无需代码重复。使用此功能需:

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

例如:若需为声明式节点教程中的 NasaPics 节点添加版本控制,并配置某个资源仅在该节点版本2中显示。在基础 NasaPics.node.ts 文件中:

{
displayName: 'NASA Pics',
name: 'NasaPics',
icon: 'file:nasapics.svg',
// List the available versions
version: [1,2,3],
// More basic parameters here
properties: [
// Add a resource that's only displayed for version2
{
displayName: 'Resource name',
// More resource parameters
displayOptions: {
show: {
'@version': 2,
},
},
},
],
}

完整版本控制#

此功能不适用于声明式节点。

具体示例可参考 Mattermost 节点

完整版本控制摘要:

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