노드 버전 관리
n8n v2.29n8n은 노드 버전 관리를 지원합니다. n8n이 어떤 노드 버전을 로드할지 결정하는 방식을 알아두세요. 노드 스타일에 따라 제한되는 버전 관리 유형 선언형 스타일로 노드를 빌드하는 경우 전체 버전 관리를 사용할 수 없습니다.
n8n은 노드 버전 관리를 지원합니다. 새 버전을 도입하여 기존 동작을 깨뜨리지 않고 기존 노드를 변경할 수 있습니다.
n8n이 어떤 노드 버전을 로드할지 결정하는 방식을 알아두세요.
- 사용자가 버전 1을 사용하여 워크플로를 빌드하고 저장한 경우, 노드의 버전 2를 만들어 게시하더라도 n8n은 해당 워크플로에서 계속 버전 1을 사용합니다.
- 사용자가 새 워크플로를 만들고 노드를 탐색할 때, n8n은 항상 해당 노드의 최신 버전을 로드합니다.
노드 스타일에 따라 제한되는 버전 관리 유형
선언형 스타일로 노드를 빌드하는 경우 전체 버전 관리를 사용할 수 없습니다.
경량 버전 관리#
이 기능은 모든 노드 유형에서 사용할 수 있습니다.
하나의 노드는 여러 버전을 포함할 수 있어, 코드를 중복하지 않고도 작은 버전 증분을 허용합니다. 이 기능을 사용하려면 다음과 같이 합니다.
- 메인
version매개변수를 배열로 변경하고, 기존 버전을 포함하여 버전 번호를 추가합니다. - 그런 다음
displayOptions의 모든 객체에서@version을 사용하여 버전 매개변수에 접근할 수 있습니다(n8n이 해당 객체를 표시할 버전을 제어하기 위함). 함수에서const nodeVersion = this.getNode().typeVersion;을 사용하여 버전을 조회할 수도 있습니다.
예를 들어, 선언형 노드 튜토리얼의 NasaPics 노드에 버전 관리를 추가하고, n8n이 노드의 버전 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,
},
},
},
],
}
기능 기반 버전 관리#
기능 플래그를 사용하면 노드 버전에 연결된 명명된 기능을 기반으로 매개변수 표시 여부와 실행 로직을 제어할 수 있습니다.
기능 정의하기#
노드 유형 설명에 features 객체를 추가합니다. 각 기능은 @version 조건을 사용하여 어떤 버전에서 해당 기능을 활성화할지 지정합니다.
{
version: [2, 2.1, 2.2, 2.3, 2.4],
features: {
useNewApi: { '@version': [{ _cnd: { gte: 2.2 } }] },
useLegacyAuth: { '@version': [{ _cnd: { lte: 2.1 } }] },
useSpecialMode: { '@version': [2] },
},
// More basic parameters here
}
사용 가능한 조건: gte, lte, gt, lt. 특정 버전과 일치시키려면 단순 버전 번호를 전달합니다.
displayOptions에서 @feature 사용하기#
displayOptions에서 @feature를 사용하여 기능 플래그를 기반으로 매개변수 표시 여부를 제어합니다.
{
displayName: 'New API Field',
name: 'newApiField',
type: 'string',
displayOptions: {
show: {
'@feature': ['useNewApi'],
},
},
}
기능이 활성화되어 있지 않을 때 매개변수를 표시하려면 조건 구문을 사용합니다.
displayOptions: {
show: {
'@feature': [{ _cnd: { not: 'useNewApi' } }],
},
}
@feature를 다른 표시 조건과 결합할 수도 있습니다.
displayOptions: {
show: {
resource: ['myResource'],
'@feature': [{ _cnd: { eq: 'useNewApi' } }],
},
}
코드에서 기능 확인하기#
IExecuteFunctions 또는 IWebhookFunctions와 같은 실행 컨텍스트에서 this.isNodeFeatureEnabled()를 사용합니다.
if (this.isNodeFeatureEnabled('useNewApi')) {
// Process with new API
} else {
// Process with legacy API
}
전체 버전 관리#
이 기능은 선언형 스타일 노드에서는 사용할 수 없습니다.
예를 들어 Mattermost 노드를 참조하세요.
전체 버전 관리 요약:
- 기본 노드 파일은
INodeType대신NodeVersionedType을 확장해야 합니다. - 기본 노드 파일에는
defaultVersion(일반적으로 최신 버전)을 포함한 설명, 이름 등 기본 노드 메타데이터와 버전 목록이 포함되어야 합니다. 노드 기능은 포함하지 않아야 합니다. - n8n은 버전 폴더 이름으로
v1,v2등을 사용할 것을 권장합니다.