InfoGrab Docs

Node 버전 관리

요약

n8n은 node 버전 관리를 지원합니다. n8n이 로드할 node 버전을 결정하는 방식에 유의하세요: 선언형 스타일을 사용하여 node를 빌드하는 경우 전체 버전 관리를 사용할 수 없습니다. 모든 node 타입에서 사용 가능합니다.

n8n은 node 버전 관리를 지원합니다. 새 버전을 도입하여 기존 동작을 손상시키지 않고 기존 node를 변경할 수 있습니다.

n8n이 로드할 node 버전을 결정하는 방식에 유의하세요:

  • 사용자가 버전 1을 사용하여 워크플로를 빌드하고 저장하면, 버전 2를 생성하고 게시하더라도 n8n은 해당 워크플로에서 버전 1을 계속 사용합니다.
  • 사용자가 새 워크플로를 생성하고 node를 검색하면, n8n은 항상 node의 최신 버전을 로드합니다.
버전 관리 유형은 node 스타일에 의해 제한됨

선언형 스타일을 사용하여 node를 빌드하는 경우 전체 버전 관리를 사용할 수 없습니다.

가벼운 버전 관리#

모든 node 타입에서 사용 가능합니다.

하나의 node에 두 개 이상의 버전을 포함할 수 있어, 코드 중복 없이 소규모 버전 증분이 가능합니다. 이 기능을 사용하려면:

  1. 메인 version 파라미터를 배열로 변경하고, 기존 버전을 포함하여 버전 번호를 추가합니다.
  2. 그런 다음 오브젝트의 displayOptions에서 @version으로 버전 파라미터에 접근할 수 있습니다(n8n이 어떤 버전과 함께 오브젝트를 표시할지 제어하기 위해). 함수에서 const nodeVersion = this.getNode().typeVersion;을 사용하여 버전을 쿼리할 수도 있습니다.

예를 들어, 선언형 node 튜토리얼의 NasaPics node에 버전 관리를 추가하고, node 버전 2에서만 n8n이 리소스를 표시하도록 구성한다고 가정해 보겠습니다. 기본 NasaPics.node.ts 파일에서:

{
    displayName: 'NASA Pics',
    name: 'NasaPics',
    icon: 'file:nasapics.svg',
    // 사용 가능한 버전 목록
    version: [1,2,3],
    // 여기에 더 많은 기본 파라미터
    properties: [
        // 버전 2에서만 표시되는 리소스 추가
        {
            displayName: 'Resource name',
            // 더 많은 리소스 파라미터
            displayOptions: {
                show: {
                    '@version': 2,
                },
            },
        },
    ],
}

기능 기반 버전 관리#

기능 플래그를 사용하면 node 버전에 연결된 명명된 기능을 기반으로 파라미터 가시성과 실행 로직을 제어할 수 있습니다.

기능 정의#

node 타입 설명에 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] },
    },
    // 더 많은 기본 파라미터
}

사용 가능한 조건: 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')) {
    // 새 API로 처리
} else {
    // 레거시 API로 처리
}

전체 버전 관리#

선언형 스타일 node에서는 사용할 수 없습니다.

예시로 Mattermost node를 참고하세요.

전체 버전 관리 요약:

  • 기본 node 파일은 INodeType 대신 NodeVersionedType을 확장해야 합니다.
  • 기본 node 파일에는 defaultVersion(일반적으로 최신 버전), node 이름 등의 다른 기본 node 메타데이터, 버전 목록을 포함한 설명이 있어야 합니다. node 기능은 포함되지 않아야 합니다.
  • n8n은 버전 폴더 이름으로 v1, v2 등을 사용하는 것을 권장합니다.

Node 버전 관리

원문 보기
요약

n8n은 node 버전 관리를 지원합니다. n8n이 로드할 node 버전을 결정하는 방식에 유의하세요: 선언형 스타일을 사용하여 node를 빌드하는 경우 전체 버전 관리를 사용할 수 없습니다. 모든 node 타입에서 사용 가능합니다.

n8n은 node 버전 관리를 지원합니다. 새 버전을 도입하여 기존 동작을 손상시키지 않고 기존 node를 변경할 수 있습니다.

n8n이 로드할 node 버전을 결정하는 방식에 유의하세요:

  • 사용자가 버전 1을 사용하여 워크플로를 빌드하고 저장하면, 버전 2를 생성하고 게시하더라도 n8n은 해당 워크플로에서 버전 1을 계속 사용합니다.
  • 사용자가 새 워크플로를 생성하고 node를 검색하면, n8n은 항상 node의 최신 버전을 로드합니다.
버전 관리 유형은 node 스타일에 의해 제한됨

선언형 스타일을 사용하여 node를 빌드하는 경우 전체 버전 관리를 사용할 수 없습니다.

가벼운 버전 관리#

모든 node 타입에서 사용 가능합니다.

하나의 node에 두 개 이상의 버전을 포함할 수 있어, 코드 중복 없이 소규모 버전 증분이 가능합니다. 이 기능을 사용하려면:

  1. 메인 version 파라미터를 배열로 변경하고, 기존 버전을 포함하여 버전 번호를 추가합니다.
  2. 그런 다음 오브젝트의 displayOptions에서 @version으로 버전 파라미터에 접근할 수 있습니다(n8n이 어떤 버전과 함께 오브젝트를 표시할지 제어하기 위해). 함수에서 const nodeVersion = this.getNode().typeVersion;을 사용하여 버전을 쿼리할 수도 있습니다.

예를 들어, 선언형 node 튜토리얼의 NasaPics node에 버전 관리를 추가하고, node 버전 2에서만 n8n이 리소스를 표시하도록 구성한다고 가정해 보겠습니다. 기본 NasaPics.node.ts 파일에서:

{
    displayName: 'NASA Pics',
    name: 'NasaPics',
    icon: 'file:nasapics.svg',
    // 사용 가능한 버전 목록
    version: [1,2,3],
    // 여기에 더 많은 기본 파라미터
    properties: [
        // 버전 2에서만 표시되는 리소스 추가
        {
            displayName: 'Resource name',
            // 더 많은 리소스 파라미터
            displayOptions: {
                show: {
                    '@version': 2,
                },
            },
        },
    ],
}

기능 기반 버전 관리#

기능 플래그를 사용하면 node 버전에 연결된 명명된 기능을 기반으로 파라미터 가시성과 실행 로직을 제어할 수 있습니다.

기능 정의#

node 타입 설명에 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] },
    },
    // 더 많은 기본 파라미터
}

사용 가능한 조건: 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')) {
    // 새 API로 처리
} else {
    // 레거시 API로 처리
}

전체 버전 관리#

선언형 스타일 node에서는 사용할 수 없습니다.

예시로 Mattermost node를 참고하세요.

전체 버전 관리 요약:

  • 기본 node 파일은 INodeType 대신 NodeVersionedType을 확장해야 합니다.
  • 기본 node 파일에는 defaultVersion(일반적으로 최신 버전), node 이름 등의 다른 기본 node 메타데이터, 버전 목록을 포함한 설명이 있어야 합니다. node 기능은 포함되지 않아야 합니다.
  • n8n은 버전 폴더 이름으로 v1, v2 등을 사용하는 것을 권장합니다.