노드 파일 구조#
노드 구조에서 모범 사례와 표준을 따르면 노드를 유지 관리하기 쉬워집니다. 다른 사람들이 코드 작업을 할 때 유용합니다.
노드의 파일 및 디렉터리 구조는 다음에 따라 달라집니다:
- 노드의 복잡성.
- 노드 버전 사용 여부.
- npm 패키지에 포함된 노드 수.
필수 파일 및 디렉터리#
노드에는 다음이 포함되어야 합니다:
- 프로젝트의 루트에
package.json
파일. 이는 모든 npm 모듈에 필요합니다. - 노드의 코드를 포함하는
nodes
디렉터리:- 이 디렉터리는 형식이
<node-name>.node.ts
인 기본 파일을 포함해야 합니다. 예:MyNode.node.ts
. - n8n은 노드의 메타데이터를 포함하는 코덱스 파일을 포함할 것을 권장합니다. 코덱스 파일 이름은 노드 기본 파일 이름과 일치해야 합니다. 예를 들어, 이름이
MyNode.node.ts
인 노드 기본 파일이 주어지면, 코덱스 이름은MyNode.node.json
입니다. nodes
디렉터리는 버전을 위한 디렉터리를 포함하여 다른 파일 및 하위 디렉터리를 포함할 수 있으며, 모듈식 구조를 만들기 위해 둘 이상의 파일로 분할된 노드 코드를 포함할 수 있습니다.
- 이 디렉터리는 형식이
- 자격 증명 코드를 포함하는
credentials
디렉터리. 이 코드는 단일 자격 증명 파일에 있습니다. 파일 이름 형식은<node-name>.credentials.ts
입니다. 예:MyNode.credentials.ts
.
모듈식 구조#
노드의 모든 기능을 하나의 파일에 배치할지, 기본 파일과 다른 모듈로 분리할지를 선택할 수 있습니다. 기본 파일은 이후에 이를 가져옵니다. 노드가 매우 간단하지 않은 경우에는 분리하는 것이 모범 사례입니다.
기본 패턴은 작업을 분리하는 것입니다. HttpBin 시작 노드를 예로 참조하세요.
더 복잡한 노드의 경우 n8n은 디렉터리 구조를 권장합니다. Airtable 노드 또는 Microsoft Outlook 노드를 예로 참조하세요.
actions
: 리소스를 나타내는 하위 디렉터리를 포함하는 디렉터리.- 각 하위 디렉터리는 두 유형의 파일을 포함해야 합니다:
- 리소스 설명이 있는 인덱스 파일 (
<resourceName>.resource.ts
혹은index.ts
이름) - 작업 파일
<operationName>.operation.ts
. 이 파일에는 작업의description
과execute
함수라는 두 개의 내보내기가 있어야 합니다.
methods
: 동적 매개변수 기능을 위한 선택적 디렉터리.transport
: 통신 구현을 포함하는 디렉터리.
버전 관리#
노드에 두 개 이상의 버전이 있고 전체 버전 관리를 사용하는 경우 파일 구조가 더 복잡해집니다. 각 버전에 대한 디렉터리와 기본 버전을 설정하는 기본 파일이 필요합니다. 버전과 관련된 작업에 대한 자세한 정보는 노드 버전 관리를 참조하세요.
패키지에 포함할 노드 수 결정#
노드를 빌드할 때 두 가지 가능한 설정이 있습니다:
- 하나의 npm 패키지에 하나의 노드.
- 하나의 npm 패키지에 여러 개의 노드.
n8n은 두 가지 접근 방식을 모두 지원합니다. 노드를 여러 개 포함하는 경우, 각 노드는 nodes
디렉토리에 고유한 디렉토리를 가져야 합니다.
프로그래밍 노드에 대한 모범 사례 예시#
n8n의 내장 Airtable 노드는 모듈 구조와 버전 관리를 구현하며, 권장 패턴을 따릅니다.