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
고급 옵션
주요 옵션 목록
옵션 | 설명 |
---|---|
--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을 도입해 보시기를 강력히 추천합니다.
댓글