발행일: 2026-10-06(화) 11:44
홈›도서›하루 30분 n8n ④›커스텀 노드 고급 패턴과 npm 배포
DAY 24★★★

커스텀 노드 고급 패턴과 npm 배포

📖 이론10분
🛠️ 실습15분
🎯 미션5분

"공유된 지식은 두 배가 된다."

— 프랜시스 베이컨 (Francis Bacon, 철학자)
🎯 오늘의 학습 목표
  • 다중 Operation 패턴으로 확장 가능한 노드를 설계할 수 있다.
  • package.json을 커뮤니티 노드 표준에 맞게 작성할 수 있다.
  • npm에 커스텀 노드를 배포하고 서버 n8n에 설치할 수 있다.
다중 Operation 노드 패턴
typescript
properties: [
  {
    displayName: '작업',
    name: 'operation',
    type: 'options',
    noDataExpression: true,
    options: [
      {
        name: '데이터 가져오기',
        value: 'get',
        description: '특정 ID의 데이터를 가져옵니다',
        action: '데이터 가져오기',
      },
      {
        name: '데이터 만들기',
        value: 'create',
        description: '새 데이터를 만듭니다',
        action: '새 데이터 만들기',
      },
    ],
    default: 'get',
  },
  {
    displayName: 'ID',
    name: 'id',
    type: 'string',
    displayOptions: { show: { operation: ['get'] } },
    default: '',
    required: true,
  },
  {
    displayName: '이름',
    name: 'name',
    type: 'string',
    displayOptions: { show: { operation: ['create'] } },
    default: '',
    required: true,
  },
],
npm 배포용 package.json
json
{
  "name": "n8n-nodes-aligo-sms",
  "version": "1.0.0",
  "description": "알리고 SMS 발송 n8n 커스텀 노드",
  "keywords": [
    "n8n-community-node-package",
    "n8n",
    "sms",
    "aligo",
    "korea"
  ],
  "license": "MIT",
  "main": "index.js",
  "n8n": {
    "n8nNodesApiVersion": 1,
    "credentials": [
      "dist/credentials/AligoApi.credentials.js"
    ],
    "nodes": [
      "dist/nodes/AligoSms/AligoSms.node.js"
    ]
  },
  "scripts": {
    "build": "tsc && gulp build:icons",
    "dev": "tsc --watch",
    "lint": "eslint nodes credentials --ext .ts",
    "prepublishOnly": "npm run build && npm run lint"
  }
}
npm 배포 명령
bash
npm login
npm publish --access public
서버 n8n에 커스텀 노드 설치

n8n UI에서 Settings → Community Nodes → Install → 패키지명(n8n-nodes-aligo-sms) 입력. 설치 후 n8n이 자동 재시작되고 노드 패널에서 확인할 수 있습니다.

🛠️ DAY 24 실습
Step 1다중 Operation 패턴 적용
  1. AligoSms 노드에 operation 필드 추가 (SMS 발송 / 잔여 건수 조회)
  2. displayOptions.show 로 operation에 따라 다른 필드 표시
  3. execute 함수 내에서 operation 값에 따라 분기 처리
Step 2package.json 수정 및 빌드
  1. name을 n8n-nodes-aligo-sms 로 변경
  2. keywords에 n8n-community-node-package 포함
  3. npm run build 로 최종 빌드 확인
Step 3서버 n8n에 설치 (npm 배포 없이 직접 설치)
  1. 서버에서 npm pack 으로 .tgz 파일 생성
  2. Settings → Community Nodes → Install → 패키지명 입력
  3. 설치 후 노드 패널에서 확인
🚀 DAY 24 미션

다중 Operation 패턴(SMS 발송 + 잔여 건수 조회)이 적용된 알리고 노드를 완성하고, 서버 n8n에 설치하여 실제 워크플로우에서 동작하는 것을 확인하세요.

☑️ 미션 체크리스트
  • 다중 Operation 패턴 적용 완료 (get/create 또는 send/balance)
  • package.json 커뮤니티 노드 표준 설정 완료
  • TypeScript 빌드 성공 (경고 없음)
  • 서버 n8n에 설치 및 워크플로우에서 사용 확인
💡 힌트: npm publish 전에 npm pack 으로 로컬에서 패키지 구조를 먼저 확인하세요. 아이콘 파일이 패키지에 포함됐는지 체크합니다.
🎯 성공 기준: 서버 n8n의 실제 워크플로우에서 커스텀 노드가 정상 동작하는 상태
← 이전
첫 번째 커스텀 노드 만들기
다음 →
PART 4 미니 프로젝트: 회사 전용 n8n 노드 패키지
← 목차로 돌아가기