노드 파일 구조 선택하기
n8n v2.29노드 구조에서 모범 사례와 표준을 따르면 노드를 유지 관리하기가 더 쉬워집니다. 노드의 파일 및 디렉터리 구조는 다음에 따라 달라집니다. n8n은 예상되는 노드 파일 구조를 생성하기 위해 n8n-node 도구 사용을 권장합니다.
노드 구조에서 모범 사례와 표준을 따르면 노드를 유지 관리하기가 더 쉬워집니다. 다른 사람이 해당 코드를 다뤄야 할 때도 도움이 됩니다.
노드의 파일 및 디렉터리 구조는 다음에 따라 달라집니다.
- 노드의 복잡도.
- 노드 버전 관리 사용 여부.
- npm 패키지에 포함하는 노드 개수.
n8n은 예상되는 노드 파일 구조를 생성하기 위해 n8n-node 도구 사용을 권장합니다. 더 복잡한 요구 사항을 충족하기 위해 필요에 따라 생성된 스캐폴딩을 커스터마이징할 수 있습니다.
필수 파일 및 디렉터리#
노드에는 다음이 포함되어야 합니다.
- 프로젝트 루트에 위치한
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입니다.
모듈식 구조#
노드의 모든 기능을 하나의 파일에 넣을지, 아니면 기본 파일과 이 파일이 임포트하는 다른 모듈들로 나눌지 선택할 수 있습니다. 노드가 매우 단순한 경우가 아니라면, 이를 나누는 것이 모범 사례입니다.
기본적인 패턴은 오퍼레이션을 분리하는 것입니다. 예시는 GithubIssues 스타터 노드를 참고하세요.
더 복잡한 노드의 경우, n8n은 디렉터리 구조를 사용할 것을 권장합니다. 예시로 Airtable 노드 또는 Microsoft Outlook 노드를 참고하세요.
actions: 리소스를 나타내는 하위 디렉터리를 포함하는 디렉터리입니다.- 각 하위 디렉터리에는 두 가지 유형의 파일이 포함되어야 합니다.
- 리소스 설명이 담긴 인덱스 파일(
<resourceName>.resource.ts또는index.ts로 명명됨) - 오퍼레이션용 파일
<operationName>.operation.ts. 이 파일들은 오퍼레이션의description과execute함수, 두 가지를 내보내야(export) 합니다.
- 리소스 설명이 담긴 인덱스 파일(
- 각 하위 디렉터리에는 두 가지 유형의 파일이 포함되어야 합니다.
methods: 동적 파라미터 함수를 위한 선택적 디렉터리입니다.transport: 통신 구현이 담긴 디렉터리입니다.
버전 관리#
노드에 둘 이상의 버전이 있고 전체 버전 관리(full versioning)를 사용하는 경우, 파일 구조가 더 복잡해집니다. 각 버전용 디렉터리와 기본 버전을 설정하는 기본 파일이 필요합니다. 버전 관리 유형을 포함해 버전 작업에 대한 자세한 내용은 노드 버전 관리를 참고하세요.
패키지에 포함할 노드 개수 결정하기#
노드를 빌드할 때 가능한 구성은 두 가지입니다.
- 하나의 npm 패키지에 하나의 노드.
- 하나의 npm 패키지에 둘 이상의 노드.
n8n은 두 방식 모두를 지원합니다. 둘 이상의 노드를 포함하는 경우, 각 노드는 nodes 디렉터리 안에 자신만의 디렉터리를 가져야 합니다.
프로그래매틱 노드를 위한 모범 사례 예시#
n8n의 내장 Airtable 노드는 권장 패턴을 따라 모듈식 구조와 버전 관리를 구현합니다.