npm은 자바스크립트 패키지를 찾고 배포하며 프로젝트의 의존성을 관리하는 데 쓰인다. 공식 소개는 npm을 웹사이트, 명령줄 도구(CLI), 패키지와 관련 정보를 보관하는 레지스트리의 세 부분으로 설명한다. (npm 소개)
프로젝트의 package.json에는 사용하는 패키지와 버전 조건 등을 적는다. 프로젝트 디렉터리에서 npm install을 실행하면 이 목록에 따른 의존성을 설치한다. 하나를 골랐더라도 그 패키지가 의존하는 다른 패키지들이 함께 필요할 수 있다. (npm install)
직접 쓸 코드는 줄었는데 관리할 목록은 길어질 수 있다. 의존성 지옥은 이런 관계의 충돌과 복잡함을 다룬다. 패키지 하나를 들이는 비용에는 기능을 얻는 이득과 버전, 이용 조건, 유지 상태를 살필 일이 함께 들어간다.