NPM vs Yarn vs PNPM

leedaeun·2024년 6월 11일

개발 공부

목록 보기
2/2
post-thumbnail

개발의 초기 세팅을 진행할때 package manager에 대해 고르는 다음과 같은 문구를 본적이 있을 것이다.

? Which package manager would you ❤️ to use?
npm
❯ yarn
pnpm

보통은 npm이 default로 설정 되어있는데, 위 세개 이외에도 npm, yarn, pnpm, APT, Homebrew, Pip은 대표적인 패키지 관리자이다. 각각 무엇인지 알아보자.

일단 세 개의 공통점은 모두 패키지를 관리해주는 패키지 매니저이다 !

패키지 매니저란?

: 소프트웨어 패키지를 관리하고 설치, 업데이트, 삭제하는 도구

💻 패키지 매니저의 기능은 무엇이 있을까 ?

  1. 의존성 관리

  2. 버전 관리

  3. 패키지 검색 및 공유

  4. 스크립트 실행

JavaScript/Node.js

NPM: 가장 일반적인 JavaScript 패키지 매니저. Node.js와 함께 기본으로 제공됩니다.
Yarn: 성능과 안정성이 향상된 NPM의 대안.
PNPM: 빠른 설치와 효율적인 디스크 사용을 제공.

Python

Pip: Python 패키지 설치를 위한 표준 도구.

Ruby

RubyGems: Ruby 패키지 매니저로, Bundler와 함께 사용되는 경우가 많습니다.

Java

Maven: 의존성 관리와 빌드를 위한 도구.
Gradle: 유연성과 성능이 뛰어난 빌드 도구.

macOS

Homebrew: macOS에서 패키지 설치와 관리.

Linux (Debian 기반)

APT: Debian 및 Ubuntu 기반 시스템에서 패키지 관리.

Linux (RPM 기반)

YUM: Red Hat, CentOS, Fedora 등에서 패키지 관리.

이 중 JavaScript/Node.js에서 사용하는 NPM vs Yarn vs PNPM을 비교해보자.

1. npm

: Node.js 생태계의 패키지 매니저로, JavaScript 라이브러리 및 도구를 관리한다.

📗 npm에 대해
설치 명령어 : npm install package-name
설치 삭제 명령어 : npm uninstall package-name
의존성 관리 : package.json, package-lock.json, node_modules와 같은 파일들이 생겨나 의존성을 관리해준다.
MacOS 기준 설치 위치 : /usr/local/lib/node_modules

속도가 느리다는 단점이 존재하지만, 넓게 사용 가능하며 현재는 가장 많이 사용하고 있다 할 수 있음

2. Yarn

: Facebook이 주도하여 개발한 JavaScript 패키지 매니저로, NPM의 대안

📒 yarn에 대해
설치 명령어 : yarn add package-name
설치 삭제 명령어 : yarn remove package-name
의존성 관리 : package.json, yarn.lock, node_modules/와 같은 파일들이 생겨나 의존성을 관리해준다.
MacOS 기준 설치 위치 : /usr/local/lib/node_modules

빠른속도와 일관성 측명에서 장점을 가지지만 node.js를 설치할때 기본적으로 포함되어 설치되지 않음으로 별도로 설치해야한다는 단점이 존재한다.

3. Pnpm

: 효율적이고 빠른 패키지 설치를 목표로 하는 JavaScript 패키지 매니저

📘 pnpm에 대해
설치 명령어 : pnpm add package-name
설치 삭제 명령어 ㅣ pnpm remove package-name
의존성 관리 : package.json, pnpm-lock.yaml, node_modules/와 같은 파일들이 생겨나 의존성을 관리해준다.
MacOS 기준 설치 위치 : ~/.pnpm-store

하드 링크와 symlink를 사용하여 디스크 공간을 절약할 수 있다는 장점이 있지만 호환되지 않는 도구나 프로젝트가 존재할 수 있다는 점에 단점이 있다.

profile
💻 주니어 개발자 기록용 💻

0개의 댓글