본문 바로가기
프로그램 (PHP,Python)

npm, yarn, pnpm, bun 모두 지원 Node.js 의존성 CLI 분석 도구 qnm

by 날으는물고기 2025. 6. 15.

npm, yarn, pnpm, bun 모두 지원 Node.js 의존성 CLI 분석 도구 qnm

728x90

qnm은 JavaScript 프로젝트의 node_modules 폴더를 탐색하고 분석하는 데 특화된 강력한 CLI(Command Line Interface) 도구입니다. npm list나 yarn list와 같은 기존 도구들보다 훨씬 빠른 속도와 직관적인 인터페이스를 제공하며, 개발자가 프로젝트의 의존성을 효과적으로 관리할 수 있도록 도와줍니다. 특히 대규모 프로젝트나 모노레포(monorepo) 환경에서 복잡한 의존성 구조를 파악하고 문제를 진단하는 데 매우 유용한 도구입니다.

주요 특징

1. 초고속 검색 성능

  • npm list나 yarn list 대비 월등히 빠른 검색 속도
  • 대규모 프로젝트에서도 즉각적인 결과 제공
  • 불필요한 출력 없이 핵심 정보만 표시

2. 인터랙티브 사용자 인터페이스

  • fzf 스타일의 fuzzy-search 지원
  • 실시간 검색 및 필터링 기능
  • 키보드만으로 빠른 탐색 가능 (화살표 키, Enter, Tab)

3. 포괄적인 패키지 정보 제공

  • 패키지의 모든 설치 버전 표시
  • 각 버전별 설치 경로 확인
  • 최신 버전 정보 및 릴리스 날짜
  • 패키지 설치 이유(의존성 경로) 추적

4. 진단 및 분석 기능

  • 중복 설치된 패키지 탐지
  • 용량이 큰 패키지 식별
  • 의존성 구조 시각화
  • 버전 충돌 문제 파악

5. 다양한 패키지 매니저 지원

  • npm, yarn, pnpm, bun 등 모든 주요 패키지 매니저 호환
  • 모노레포 환경 완벽 지원
  • 복잡한 프로젝트 구조에서도 안정적 동작

설치 방법

1. 설치 없이 즉시 실행

qnm의 가장 큰 장점 중 하나는 전역 설치 없이도 바로 사용할 수 있다는 점입니다.

# bunx 사용
bunx qnm [패키지명]

# npx 사용
npx qnm [패키지명]

# yarn 사용
yarn dlx qnm [패키지명]

2. 전역 설치 (선택사항)

자주 사용한다면 전역으로 설치할 수도 있습니다.

# npm으로 설치
npm install --global qnm

# yarn으로 설치
yarn global add qnm

# bun으로 설치
bun add --global qnm

상세 사용법

1. 특정 패키지 정보 조회

가장 기본적인 사용법은 특정 패키지의 정보를 조회하는 것입니다.

bunx qnm lodash

이 명령어는 다음과 같은 정보를 표시합니다.

  • lodash가 설치된 모든 위치
  • 각 위치별 버전 정보
  • 최신 버전과 현재 설치된 버전의 비교
  • 각 버전의 릴리스 날짜
  • 패키지가 설치된 이유 (어떤 의존성 때문인지)

2. 인터랙티브 모드로 전체 패키지 탐색

인자 없이 실행하면 인터랙티브 fuzzy-search 모드가 활성화됩니다.

bunx qnm
  • 실시간으로 패키지 이름을 검색할 수 있습니다
  • 화살표 키로 원하는 패키지를 선택할 수 있습니다
  • Enter 키로 선택한 패키지의 상세 정보를 볼 수 있습니다
  • Tab 키로 여러 패키지를 선택할 수 있습니다

3. 패턴 매칭으로 관련 패키지 찾기

특정 문자열이 포함된 모든 패키지를 찾을 수 있습니다.

# eslint 관련 모든 패키지 찾기
bunx qnm match eslint

# react로 시작하는 패키지 찾기
bunx qnm match "^react"

# 특정 스코프의 모든 패키지 찾기
bunx qnm match "@babel"

4. 의존성 진단 (Doctor 명령)

프로젝트의 의존성 상태를 종합적으로 진단합니다.

# 기본 진단
bunx qnm doctor

# 중복 패키지 기준으로 정렬
bunx qnm doctor --sort duplicates

# 용량 기준으로 정렬
bunx qnm doctor --sort size

Doctor 명령은 다음을 진단합니다.

  • 중복 설치된 패키지와 버전
  • 용량이 큰 패키지 목록
  • 잠재적인 최적화 가능 영역
  • 버전 충돌 가능성

5. 전체 패키지 목록 보기

프로젝트의 모든 패키지를 리스트 형태로 볼 수 있습니다.

# 모든 패키지 보기
bunx qnm list

# 축약 명령
bunx qnm ls

# 직접 의존성만 보기
bunx qnm ls --deps

6. 패키지 홈페이지 열기

패키지의 공식 홈페이지를 브라우저에서 바로 열 수 있습니다.

bunx qnm homepage react

7. package.json 파일 열기

특정 패키지의 package.json 파일을 에디터로 바로 열 수 있습니다.

# 기본 에디터로 열기
bunx qnm lodash --open

# 축약 옵션
bunx qnm lodash -o

고급 옵션

300x250

주요 옵션 목록

옵션 설명
--no-remote npm 레지스트리 접근 비활성화 (오프라인 모드)
-o, --open package.json을 에디터로 열기
-d, --debug 디버깅용 상세 정보 출력
--disable-colors 컬러 출력 비활성화
--deps 직접 의존성만 표시 (list 명령과 함께 사용)
--sort 정렬 기준 지정 (doctor 명령과 함께 사용)

옵션 활용 예시

# 오프라인 모드로 빠르게 확인
bunx qnm react --no-remote

# 디버깅 정보와 함께 확인
bunx qnm express -d

# 색상 없이 출력 (파이프나 리다이렉션 시 유용)
bunx qnm list --disable-colors > packages.txt

실전 활용 시나리오

1. 중복 패키지 문제 해결

# 중복 패키지 진단
bunx qnm doctor --sort duplicates

# 특정 패키지의 중복 설치 확인
bunx qnm react

# 중복 원인 추적
bunx qnm react --why

2. 번들 크기 최적화

# 용량 큰 패키지 찾기
bunx qnm doctor --sort size

# 특정 패키지와 대안 비교
bunx qnm moment
bunx qnm dayjs

3. 버전 충돌 해결

# 모든 버전 확인
bunx qnm typescript

# 의존성 경로 추적
bunx qnm typescript --why

4. 모노레포 환경에서의 활용

# 워크스페이스 전체 패키지 확인
bunx qnm list

# 특정 패키지가 여러 워크스페이스에 설치된 경우
bunx qnm match "@workspace"

다른 도구와의 비교

npm list vs qnm

  • 속도: qnm이 5-10배 빠름
  • UI: qnm은 인터랙티브 UI 제공
  • 정보: qnm은 최신 버전, 릴리스 날짜 등 추가 정보 제공

yarn list vs qnm

  • 검색: qnm은 fuzzy search 지원
  • 진단: qnm은 doctor 명령으로 종합 진단 가능
  • 유연성: qnm은 패턴 매칭 지원

주의사항 및 팁

1. 성능 최적화

  • 대규모 프로젝트에서는 --no-remote 옵션으로 더 빠른 결과 확인
  • 자주 사용하는 경우 전역 설치 권장

2. 보안 고려사항

  • 민감한 환경에서는 --no-remote 옵션 사용
  • 진단 결과를 외부와 공유할 때 주의

3. CI/CD 환경에서의 활용

# CI 스크립트 예시
bunx qnm doctor --no-remote
if [ $? -ne 0 ]; then
  echo "의존성 문제 발견"
  exit 1
fi

qnm은 현대적인 JavaScript 프로젝트 개발에 필수적인 도구입니다. 빠른 속도, 직관적인 인터페이스, 그리고 강력한 진단 기능을 통해 개발자의 생산성을 크게 향상시킵니다. 특히 복잡한 의존성 구조를 가진 대규모 프로젝트나 모노레포 환경에서 그 진가를 발휘합니다.

 

전역 설치 없이도 bunx/npx로 즉시 사용할 수 있다는 점은 큰 장점이며, 팀 전체가 동일한 도구를 쉽게 사용할 수 있게 합니다. node_modules 관리에 어려움을 겪고 있다면, qnm을 도입해 보시기를 강력히 추천합니다.

참고 자료

728x90
그리드형(광고전용)

댓글