npm

Npm-logo.svg

https://www.npmjs.com/

npmJavaScript 런타임인 Node.js를 위해 개발된 패키지 관리자이다. Node.js를 이용한 백엔드 개발 뿐만 아니라 프론트엔드 개발에도 기존의 Bower 등을 몰아내고 폭넓게 사용되고 있다.

Node.js를 설치할 경우 npm이 기본적으로 같이 설치된다.

세상에서 가장 많은 패키지가 등록되어 있는 패키지 매니저이기도 하다.

명령어[편집 | 원본 편집]

npm install
package.json에 등록된 모든 패키지를 설치한다.
npm install <package name>
<package name>에 해당되는 패키지를 설치하고, package.json에 등록한다. --save-dev 옵션을 줄 경우 devDependencies로 등록된다.
npm run <script name>
package.json의 scripts 항목에 등록된 명령어를 실행한다. 빌드, 서버 시작, lint와 같은 작업들을 등록해놓고 사용할 수 있다.

대체재[편집 | 원본 편집]

npm 저장소와 호환되는 패키지 매니저로 yarn이 있다. 2016년 페이스북이 배포하였으며, 당시 npm의 느린 패키지 설치 속도와 중첩된 디렉토리 구조로 인한 용량 문제 등을 해결하였다[1]. 당시 많은 사람들이 yarn으로 넘어갔으나 이후 npm도 비슷한 업데이트를 거쳐 성능 차이를 많이 개선하여 다시 사용자가 줄어들었다.

pnpm이란 것도 있는데, 기존 npm이 모든 의존성을 node_modules에 실제로 다운로드해서 다 집어넣으면서 속도도 느리고, 디스크 용량도 엄청 잡아먹는 문제를 해결했다. pnpm은 실제 모듈들은 한번만 다운로드받아 어디 집어넣어놓고, node_modules에는 이를 가리키는 심볼릭 링크만 만들어 놓는다. yarn이 중첩된 디렉토리 구조를 flat하게 풀어놓아 중복을 줄였고 npm도 이를 따라 변했는데, pnpm은 이를 다시 중첩된 tree 형태로 돌려놓은 것도 특징이다.

  1. 예를 들어, A 모듈이 B를 참조하고 있다면, 기존 npm은 A 모듈 폴더 안에 B 모듈 폴더를 넣는 식이었는데, C 모듈이 B를 참조하고 있다면 똑같은 B가 C 안에도 들어 있는 식이었다. 이를 A, B, C 각각 한 개씩만 맨 위에 설치하는 식으로 해결했다.