jeong-min.com
🤔
Dev

패키지 매니저, 뭘 쓸까? (npm, pnpm, yarn, yarn berry, etc.)

2023.07.02

💡 깨알 상식 : etc.는 라틴어 et cetera의 줄임말이다.

 

자바스크립트 사용하는 사람~?

0

타입스크립트 사용하는 사람~?

1

외부 패키지 사용하는 사람~?

2

 

패키지 매니저란?

자바스크립트 프로젝트를 개발한다면 당연하게 사용하는 패키지 매니저!

자바스크립트 패키지 매니저는 자바스크립트 프로젝트에서 사용되는 의존성 관리 도구다. 패키지 매니저는 프로젝트에 필요한 외부 라이브러리, 모듈, 플러그인 등을 손쉽게 설치하고 관리하는 역할을 한다.

우리들의 만능 집사 패키지 매니저!

3

 

자바스크립트 패키지 매니저의 주요 기능은 다음과 같다.

  1. 패키지 설치
    패키지 매니저를 사용하여 프로젝트에 필요한 패키지를 설치할 수 있다. 패키지는 일반적으로 오픈 소스 라이브러리이며, 패키지 매니저를 통해 패키지의 이름 또는 버전을 지정하여 설치할 수 있다.

  2. 의존성 관리
    패키지 매니저는 프로젝트의 의존성을 관리한다. 패키지는 다른 패키지에 의존할 수 있으며, 패키지 매니저는 이러한 의존성을 자동으로 해결하여 필요한 패키지들을 설치한다.

  3. 버전 관리
    패키지 매니저는 패키지의 다양한 버전을 관리한다. 이를 통해 특정 버전의 패키지를 설치하거나 업데이트할 수 있으며, 프로젝트가 정확한 버전의 패키지를 사용하도록 보장할 수 있다.

  4. 스크립트 실행
    패키지 매니저는 프로젝트에 미리 정의된 스크립트를 실행하는 기능을 제공한다. 이를 통해 빌드, 테스트, 배포 등의 자동화된 작업을 수행할 수 있다.

자바스크립트 패키지 매니저는 자바스크립트 프로젝트에서 필수적인 도구로, 의존성 관리와 프로젝트 구축을 더욱 간편하고 효율적으로 만들어 준다. 가장 대표적인 자바스크립트 패키지 매니저로는 npm, pnpm, yarn, yarn berry 등이 있다.

 

대표적인 자바스크립트 패키지 매니저

자바스크립트 프로젝트의 패키지 매니저인 npm, pnpm, yarn, 그리고 yarn berry에 대해 각각의 특징과 차이점에 대해 알아보자.

 

npm (Node Package Manager):

  • 특징

Node.js 생태계의 가장 대표적인 패키지 매니저다. Node.js와 함께 기본적으로 설치되며, 많은 개발자들이 널리 사용하고 있다. 강력한 CLI(Command Line Interface)를 제공하여 패키지 설치, 버전 관리, 의존성 해결 등의 기능을 수행한다.

  • 차이점

패키지 설치 시 패키지들을 각각 별도로 설치한다. 이로 인해 공유된 의존성이 중복으로 설치될 수 있다. 의존성 트리가 깊어질수록 패키지 설치 속도가 느려지고, 디스크 공간을 많이 차지할 수 있다.

 

pnpm

  • 특징

npm의 의존성 문제를 해결하기 위해 고안된 패키지 매니저로, 고유 설치와 플랫 노드 모듈을 통해 의존성 관리를 최적화한다. 다중 프로젝트에서 의존성을 공유하고, 중복 설치를 피하여 저장 공간을 절약할 수 있다.

  • 차이점

npm과 달리 의존성을 공유하여 저장 공간을 최적화한다. Flat node_modules 구조를 사용하여 파일 시스템의 깊이를 줄이고 의존성 트리를 단순화한다. 동시 설치 기능을 지원하여 의존성 설치 속도를 향상시킨다.

 

yarn

  • 특징

Facebook에서 개발한 패키지 매니저로, npm과 비슷한 목적을 가지고 있다. npm의 단점을 보완하고, 더 나은 성능과 안정성을 제공하며, 여러 개의 패키지를 병렬로 설치하여 빠른 속도를 보장한다. yarn.lock 파일을 사용하여 의존성을 더욱 확실히 관리한다.

  • 차이점

여러 패키지를 동시에 가져오고 설치하도록 최적화되어 있어 npm보다 빠른 의존성 설치 속도와 패키지 버전 관리를 제공한다. yarn.lock 파일을 사용하여 의존성 트리를 고정시켜 재현 가능한 빌드를 지원한다. 캐시 기능을 제공하여 패키지 다운로드를 최적화한다.

 

yarn berry:

  • 특징

Yarn의 새로운 버전으로, 다중 패키지 프로젝트를 위한 기능을 강화한 패키지 매니저다. Zero-install과 Plug’n’Play를 통해 의존성 설치 속도를 향상시키고 저장 공간을 절약한다. Workspaces 기능을 제공하여 여러 패키지를 하나의 저장소로 관리할 수 있다.

  • 차이점

Zero-install 기능을 통해 의존성을 로컬에 별도로 설치하지 않고 필요한 시점에 즉석에서 사용한다. Plug’n’Play를 통해 가상 파일 시스템을 사용하여 의존성 설치를 최적화한다. Workspaces 기능을 통해 모노레포 형식의 프로젝트를 관리할 수 있다.

 

요약하자면..

npm은 기본적인 패키지 매니저이며,
pnpm은 npm의 의존성 문제를 해결한 패키지 매니저다.
yarn은 npm보다 빠른 의존성 설치와 버전 관리를 제공하는 패키지 매니저이며,
yarn berry는 다중 패키지 프로젝트를 위한 기능을 강화한 yarn의 버전이다. pnpm과 yarn berry는 모노레포 환경에서 효과적으로 사용될 수 있다.

 

이외에도..

JavaScript 생태계에서는 npm, pnpm, yarn, yarn berry 외에도 몇 가지 다른 패키지 매니저가 있다.

  • Entropic

Entropic은 자바스크립트 패키지를 위한 분산 패키지 매니저다. npm 레지스트리 대신 분산된 노드들로 구성된 네트워크를 통해 패키지를 공유하고 설치한다. 개방형 인프라와 함께 작동하여 중앙 집중식 레지스트리의 문제를 해결하고자 한다.

  • Verdaccio

Verdaccio는 온프레미스 환경에서 사용할 수 있는 개인 npm 레지스트리다. 기존의 npm 레지스트리와 유사한 방식으로 패키지를 설치하고 관리할 수 있으며, 내부적으로 사용할 수 있는 고유한 패키지 레지스트리를 구축할 수 있다.

  • Rush

Rush는 Microsoft에서 개발한 패키지 매니저로, 대규모 프로젝트 및 모노레포를 위한 솔루션이다. Rush는 프로젝트의 의존성을 효율적으로 설치하고 빌드하며, 프로젝트 간의 의존성 관리를 간단하게 처리한다.

 

각 도구는 고유한 특징을 가지고 있으므로, 선호도와 프로젝트의 특성 등을 고려하여 결정하도록 하자.

4

👇 도움이 되셨다면 👇

B

u

y

M

e

A

C

o

f

f

e

e

© Powered by danmin