노드 파일 구조#
노드 구조에서 모범 사례와 표준을 따르면 노드를 유지 관리하기 쉬워집니다. 다른 사람들이 코드 작업을 할 때 유용합니다.
노드의 파일 및 디렉터리 구조는 다음에 따라 달라집니다:
- 노드의 복잡성.
- 노드 버전 사용 여부.
- 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 노드는 모듈 구조와 버전 관리를 구현하며, 권장 패턴을 따릅니다.
