InfoGrab DocsInfoGrab Docs

노드 버전 관리

요약

n8n은 노드 버전 관리를 지원합니다. n8n이 어떤 노드 버전을 로드할지 결정하는 방식을 알아두세요. 노드 스타일에 따라 제한되는 버전 관리 유형 선언형 스타일로 노드를 빌드하는 경우 전체 버전 관리를 사용할 수 없습니다.

n8n은 노드 버전 관리를 지원합니다. 새 버전을 도입하여 기존 동작을 깨뜨리지 않고 기존 노드를 변경할 수 있습니다.

n8n이 어떤 노드 버전을 로드할지 결정하는 방식을 알아두세요.

  • 사용자가 버전 1을 사용하여 워크플로를 빌드하고 저장한 경우, 노드의 버전 2를 만들어 게시하더라도 n8n은 해당 워크플로에서 계속 버전 1을 사용합니다.
  • 사용자가 새 워크플로를 만들고 노드를 탐색할 때, n8n은 항상 해당 노드의 최신 버전을 로드합니다.
Note

노드 스타일에 따라 제한되는 버전 관리 유형

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

경량 버전 관리#

이 기능은 모든 노드 유형에서 사용할 수 있습니다.

하나의 노드는 여러 버전을 포함할 수 있어, 코드를 중복하지 않고도 작은 버전 증분을 허용합니다. 이 기능을 사용하려면 다음과 같이 합니다.

  1. 메인 version 매개변수를 배열로 변경하고, 기존 버전을 포함하여 버전 번호를 추가합니다.
  2. 그런 다음 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 등을 사용할 것을 권장합니다.

노드 버전 관리

n8n v2.29
원문 보기
요약

n8n은 노드 버전 관리를 지원합니다. n8n이 어떤 노드 버전을 로드할지 결정하는 방식을 알아두세요. 노드 스타일에 따라 제한되는 버전 관리 유형 선언형 스타일로 노드를 빌드하는 경우 전체 버전 관리를 사용할 수 없습니다.

n8n은 노드 버전 관리를 지원합니다. 새 버전을 도입하여 기존 동작을 깨뜨리지 않고 기존 노드를 변경할 수 있습니다.

n8n이 어떤 노드 버전을 로드할지 결정하는 방식을 알아두세요.

  • 사용자가 버전 1을 사용하여 워크플로를 빌드하고 저장한 경우, 노드의 버전 2를 만들어 게시하더라도 n8n은 해당 워크플로에서 계속 버전 1을 사용합니다.
  • 사용자가 새 워크플로를 만들고 노드를 탐색할 때, n8n은 항상 해당 노드의 최신 버전을 로드합니다.
Note

노드 스타일에 따라 제한되는 버전 관리 유형

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

경량 버전 관리#

이 기능은 모든 노드 유형에서 사용할 수 있습니다.

하나의 노드는 여러 버전을 포함할 수 있어, 코드를 중복하지 않고도 작은 버전 증분을 허용합니다. 이 기능을 사용하려면 다음과 같이 합니다.

  1. 메인 version 매개변수를 배열로 변경하고, 기존 버전을 포함하여 버전 번호를 추가합니다.
  2. 그런 다음 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 등을 사용할 것을 권장합니다.