npm(Node Package Manager) 웹 개발자에게 npm은 없어서는 안 되지만 가끔은 속을 썩이는 오래된 친구 같은 존재입니다. 처음 npm install을 입력하며 헤매던 초보자든, 패키지 버전을 줄줄 외우는 베테랑이든 npm은 현대 자바스크립트 생태계에서 피할 수 없는 도구입니다. 저 역시 npm과 함께 많은 시행착오를 겪었습니다. 의미도 모른 채 명령어를 복사해 붙여넣던 시절부터, 이제는 (대부분의 날에는) npm을 꽤 잘 다룬다고 말할 수 있을 정도가 되었죠.


npm이 왜 필요한 걸까요?

The real fullform of NPM

상황을 하나 상상해 보세요. 웹 앱을 만들고 있는데 날짜 선택기(Date Picker) 가 필요하다고 가정해보겠습니다. 하지만 직접 만들자니 윤년, 시간대, 각종 예외 처리까지 고려해야 하고… 그냥 간단하게 npm install moment 한 줄로 검증된 라이브러리를 바로 사용할 수도 있습니다. 이게 바로 npm의 힘입니다. npm은 전 세계 개발자들이 만든 코드가 모여 있는 거대한 코드 라이브러리와 같습니다.

라우팅이 필요하세요? 인증이 필요하세요? 이메일 주소 유효성 검사 라이브러리가 필요하세요? 아마 npm 패키지 중에 관련 패키지가 있을 겁니다. 하지만 npm은 단순히 패키지를 설치하는 도구가 아닙니다. 다음과 같은 강력한 기능을 제공합니다.

  1. 종속성 관리: 프로젝트에 필요한 패키지와 버전을 관리
  2. 스크립트 실행: 같은 팀 공통 명령어 관리 (혹시 보신 적 있나요 npm run build?).
  3. 버전 관리: 팀 구성원 모두가 동일한 패키지 버전을 사용하도록 보장
  4. 패키지 배포: 자신이 작성한 코드를 전 세계 (또는 팀과) 공유

즉, npm은 자바스크립트 생태계를 하나로 묶어주는 접착제입니다. 우리는 바퀴를 매번 새로 만들 필요 없이, 기존의 훌륭한 결과물 위에서 개발할 수 있습니다.


하지만, 왜 하필 npm일까?

NPM vs The competition

npm만 있는 건 아닙니다. 사실 선택지는 꽤 많습니다. 안타깝게도 가장 사랑받는 라이브러리는 아니지만… 그래도 믿음직스럽고 든든한 존재입니다! 진정한 개발자가 되고 싶다면 다른 대안들을 고려해 보는 것도 좋겠죠.

Pros Cons
npm • Default for Node.js • Massive package ecosystem • Historically slower than alternatives • node_modules can get large
Yarn • Faster installation • Offline mode • Another tool to learn • Occasional compatibility issues with npm
pnpm • Efficient disk space usage • Lightning-fast installations • Different node_modules structure • Less mainstream adoption
Bun • Blazing fast performance • All-in-one solution: runtime, transpiler, bundler • Still in development • Limited ecosystem compared to npm

이 파일들은 대체 뭐지?

User asking PNPM why does it need to many lines for the lock file