피드로 돌아가기
When a port is already in use, there is no interactive way to find it — so I built `port-peek`
Dev.toDev.to
DevOps

Zero-dep TUI 구현을 통한 EADDRINUSE 해결 프로세스 단축

When a port is already in use, there is no interactive way to find it — so I built `port-peek`

Mu Micro2026년 5월 21일2beginner

Context

특정 Port 점유 시 lsof, grep, kill 명령어를 순차적으로 실행해야 하는 비효율적인 Shell 리추얼 존재. 기존 CLI 도구들이 Port 번호를 사전에 알아야 하는 One-shot 방식으로 설계되어 전체 Listening Port를 탐색하며 제어하는 인터랙티브한 경험 결여.

Technical Solution

  • child_process.execSync를 활용하여 OS별 네트워크 상태 조회 명령어를 실행하는 추상화 레이어 구축
  • macOS의 lsof -iTCP -sTCP:LISTEN 명령어를 우선 적용하고 Linux 환경을 위한 ss 및 netstat Fallback 메커니즘 구현
  • 외부 라이브러리 의존성을 완전히 배제한 Zero-dependency 설계를 통해 런타임 오버헤드 최소화
  • raw mode stdin 설정을 통한 실시간 키보드 입력 처리로 Arrow-key 네비게이션 및 Enter-to-kill 인터랙션 구현
  • ANSI escape 코드를 이용한 Full-screen TUI 렌더링으로 터미널 내 시각적 포트 매니지먼트 환경 제공

- 반복적인 Shell 파이프라인 작업을 단일 인터페이스로 통합하는 TUI 도구 검토 - OS별 상이한 CLI 명령어의 Fallback 전략 수립을 통한 크로스 플랫폼 호환성 확보 - 가벼운 개발 도구 제작 시 의존성 최소화를 통해 배포 속도와 안정성 향상

원문 읽기