npm (소프트웨어)

npm은 Node.js 플랫폼을 위한 패키지 관리자이며, JavaScript 프로젝트에서 외부 라이브러리와 도구를 손쉽게 설치·관리·배포할 수 있도록 지원한다. npm은 “Node Package Manager”의 약자로, Node.js와 함께 기본적으로 제공된다.

개요

  • 정식 명칭: npm (Node Package Manager)
  • 개발·유지보수: npm, Inc.가 주도하고 있으며, 현재는 GitHub 및 전 세계 기여자 커뮤니티가 함께 관리한다.
  • 주요 기능
    • 패키지 설치: npm install <패키지명> 명령을 통해 원격 레지스트리(기본은 https://registry.npmjs.org)에서 패키지를 받아 프로젝트에 추가한다.
    • 버전 관리: package.json 파일에 의존성 버전 범위를 명시하여, 프로젝트별로 일관된 의존성 트리를 유지한다.
    • 스크립트 실행: npm run <스크립트명> 형태로 정의된 자동화 작업(빌드, 테스트 등)을 실행한다.
    • 패키지 발행: npm publish 명령을 이용해 자신이 만든 모듈을 전 세계 개발자에게 공개할 수 있다.

역사

  • 출시 연도: 2010년 2월, Isaac Z. Schlueter가 최초 공개하였다.
  • 배경: Node.js 초기 버전은 모듈 관리를 위한 표준 도구가 없었으며, 커뮤니티가 자체적으로 만든 여러 패키지 관리 솔루션이 존재했다. npm은 이러한 상황을 통합하고 표준화하기 위해 설계되었다.
  • 주요 변천:
    • 2014년 npm 5.0에서 package-lock.json 도입과 함께 자동으로 node_modules 폴더를 최적화하는 기능이 추가되었다.
    • 2020년 npm 6.14 이후, 보안 스캔(npm audit) 기능이 기본 제공돼 의존성 취약점 검출이 가능해졌다.

구조

  1. 레지스트리: 전 세계 개발자가 게시한 패키지 메타데이터와 소스 코드를 저장·배포하는 중앙 저장소.
  2. 클라이언트: 로컬 머신에서 실행되는 명령줄 도구(npm 명령)이며, Node.js 실행 파일과 함께 번들된다.
  3. 패키지 매니페스트: package.json 파일에 프로젝트 메타데이터(이름, 버전, 의존성 등)를 기술한다.

사용 예시

# 프로젝트 초기화
npm init -y

# lodash 라이브러리 설치 및 의존성 기록
npm install lodash --save

# 개발용 의존성(테스트 프레임워크 등) 설치
npm install jest --save-dev

# 설치된 패키지 최신 버전 확인 및 업데이트
npm outdated
npm update

관련 생태계

  • yarn: Facebook에서 개발한 대체 패키지 관리자이며, 동일한 레지스트리를 사용하지만 캐시 및 병렬 설치 최적화 등을 특징으로 한다.
  • pnpm: 디스크 공간 절약을 위한 하드 링크 기반 설치 방식을 제공한다.

보안 및 정책

npm 레지스트리는 공개 패키지의 무제한 업로드를 허용한다. 따라서 악성 코드가 포함된 패키지가 배포될 위험이 존재하며, 이를 완화하기 위해 npm audit, npm audit fix, 그리고 레지스트리 정책(예: 2FA(2단계 인증) 의무화) 등이 도입되었다.

최신 버전 및 지원

npm은 정기적으로 버전이 업데이트되며, Node.js LTS 릴리스와 호환성을 유지한다. 최신 버전은 npm 공식 웹사이트와 GitHub 리포지터리에서 확인할 수 있다.

참고

  • npm 공식 웹사이트: https://www.npmjs.com
  • GitHub 리포지터리: https://github.com/npm/cli

위 내용은 공개적으로 검증된 자료(공식 문서, 릴리스 노트, 주요 기술 블로그 등)를 기반으로 작성되었으며, 현재 시점(2026년 6월)까지 확인 가능한 정보에 한한다.

둘러보기

더 찾아볼 만한 주제