개발의 초기 세팅을 진행할때 package manager에 대해 고르는 다음과 같은 문구를 본적이 있을 것이다.
? Which package manager would you ❤️ to use?
npm
❯ yarn
pnpm
보통은 npm이 default로 설정 되어있는데, 위 세개 이외에도 npm, yarn, pnpm, APT, Homebrew, Pip은 대표적인 패키지 관리자이다. 각각 무엇인지 알아보자.
: 소프트웨어 패키지를 관리하고 설치, 업데이트, 삭제하는 도구
💻 패키지 매니저의 기능은 무엇이 있을까 ?
의존성 관리
버전 관리
패키지 검색 및 공유
스크립트 실행
NPM: 가장 일반적인 JavaScript 패키지 매니저. Node.js와 함께 기본으로 제공됩니다.
Yarn: 성능과 안정성이 향상된 NPM의 대안.
PNPM: 빠른 설치와 효율적인 디스크 사용을 제공.
Pip: Python 패키지 설치를 위한 표준 도구.
RubyGems: Ruby 패키지 매니저로, Bundler와 함께 사용되는 경우가 많습니다.
Maven: 의존성 관리와 빌드를 위한 도구.
Gradle: 유연성과 성능이 뛰어난 빌드 도구.
Homebrew: macOS에서 패키지 설치와 관리.
APT: Debian 및 Ubuntu 기반 시스템에서 패키지 관리.
YUM: Red Hat, CentOS, Fedora 등에서 패키지 관리.
이 중 JavaScript/Node.js에서 사용하는 NPM vs Yarn vs PNPM을 비교해보자.
: 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
속도가 느리다는 단점이 존재하지만, 넓게 사용 가능하며 현재는 가장 많이 사용하고 있다 할 수 있음
: 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를 설치할때 기본적으로 포함되어 설치되지 않음으로 별도로 설치해야한다는 단점이 존재한다.
: 효율적이고 빠른 패키지 설치를 목표로 하는 JavaScript 패키지 매니저
📘 pnpm에 대해
설치 명령어 : pnpm add package-name
설치 삭제 명령어 ㅣ pnpm remove package-name
의존성 관리 : package.json, pnpm-lock.yaml, node_modules/와 같은 파일들이 생겨나 의존성을 관리해준다.
MacOS 기준 설치 위치 : ~/.pnpm-store
하드 링크와 symlink를 사용하여 디스크 공간을 절약할 수 있다는 장점이 있지만 호환되지 않는 도구나 프로젝트가 존재할 수 있다는 점에 단점이 있다.