Search

npm, yarn, pnpm

Package Manager

패키지 매니저는 개발에 필요한 다양한 패키지를 설치하고 수정하고 업데이트 하는 등의 작업을 편리하게 도와주는 도구이다.
프로젝트를 진행하다보면 필요한 다양한 패키지들이 있고 이 패키지들을 설치하고 관리해야 할 필요가 있는데 이 패키지들을 의존성 있게 관리해주는 것이 바로 패키지 매니저이다.
즉, 패키지 매니저는 프로젝트에 사용되는 패키지를 쉽게 관리하고 설치해주는 도구이다.
Node 진형에서는 가장 많이 쓰이는 Package Manager로는 npm, yarn, pnpm이 있다.

npm

Node.js를 설치하면 기본적으로 포함되는 공식 패키지 매니저이다. 프로젝트의 의존성을 수동으로 설치해야 했던 불편함을 개선한 패키지 매니저로 node.js에 내장되어 있으므로 별도의 설치가 필요없다.

장점

보편성 : Node.js와 함께 기본 설치되어 별도 설정 없이 사용할 수 있다.
풍부한 생태계 : 가장 오래 많은 사용자들이 사용했기 때문에 생태계가 매우 풍부하다.
npx 지원 : npx을 지원하기 때문에 단일 명령으로 CLI 도구를 실행할 수 있어 편리하다.

단점

의존성 충돌 문제 : npm의 경우 패키지들이 서로 의존하도록 하기 때문에 만약 하나의 패키지에서 문제가 발생한다면 이 문제가 다른 패키지까지 전파될 가능성이 있다.
node_modules 디렉토리가 비효율적으로 커질 수 있다.
node_modules : 프로젝트가 필요한 의존성 패키지 파일들이 저장된다. npm은 각 패키지마다 독립적으로 의존성을 관리하기 때문에 패키지가 중복으로 저장되는 경우가 발생한다. ex) C패키지를 의존하는 A, B 패키지가 있다고 가정하면 A패키지에도 C패키지의 정보가 저장되고 B패키지에도 C패키지의 정보가 저장되어 C패키지가 중복되어 저장된다.
병렬 설치 및 캐싱에서 상대적으로 효율이 떨어진다.
기존에는 직렬로 설치를 하여 효율이 떨어졌고 이후 병렬 설치를 지원하지만 의존성 트리 구조를 처리하는 방식이 여전히 효율적이지 못하다.

yarn