npm 과 yarn 은 자바스크립트 런타임 환경인 노드의 패키지 관리자입니다.
그리고 CLI를 통해 패키지 설치 및 삭제뿐 아니라 패키지 버전 관리, 의존성 관리도 편리하게 할 수 있습니다.
그렇다면 둘의 차이는 뭘까요?
1. npm
노드 패키지 매니저(Node Package Manager)의 줄임말로 노드를 설치할 때 자동으로 설치되는 기본 패키지 관리자입니다.
node -v
npm -v // 버전 확인 => 설치되었는지 확인 가능
npm의 역할
- 온라인 플랫폼 : 사람들이 노드 패키지를 만들고, 업로드하고, 공유할 수 있는 공간으로 누구나 온라인 플랫폼(npm 레지스트리)에 게시된 패키지를 사용할 수 있습니다.
- 명령 줄 인터페이스(Command-line interface, CLI) : 온라인 플랫폼과 상호 작용하기 위해 명령 줄 인터페이스를 사용하며 패키지 설치 및 제거가 가능합니다.
2. yarn
2016년 페이스북에서 개발한 패키지 관리자입니다. 리액트(React)와 같은 프로젝트를 진행하며 겪었던 어려움을 해결하기 위해 개발되었고, npm 레지스트리로와 호환하면서 속도나 안정성 측면에서 npm보다 향상되었습니다.
npm install yarn --global
맥 사용자라면,
brew update
brew install yarn
3. npm과 yarn의 차이점
- 속도
- npm => 패키지를 한 번에 하나씩 순차적으로 설치합니다.
- yarn => 여러 패키지를 동시에 가져오고 설치하도록 최적화되어 있습니다.
=> 패키지 속도 측면에서 yarn이 npm보다 빠릅니다.
- 보안
- npm => 자동으로 패키지에 포함된 다른 패키지 코드를 실행합니다. => 보안 시스템에 취약성 발생
- yarn => yarn.lock 또는 package.json 파일에 있는 파일만 설치합니다.
=> yarn이 보안적으로 더 뛰어나지만, 최근 npm도 업데이트를 통해 많이 향상되었습니다.
4. 명령어
dependencies 설치 | npm install | yarn |
패키지 설치 | npm install [패키지명] | yarn add [패키지명] |
dev 패키지 설치 | npm install --save-dev [패키지명] | yarn add --dev [패키지명] |
글로벌 패키지 설치 | npm install --global [패키지명] | yarn global add [패키지명] |
패키지 제거 | npm uninstall [패키지명] | yarn remove [패키지명] |
dev 패키지 제거 | npm uninstall --save-dev [패키지명] | yarn remove [패키지명] |
글로벌 패키지 제거 | npm uninstall --global [패키지명] | yarn global remove [패키지명] |
업데이트 | npm update | yarn upgrade |
패키지 업데이트 | npm update [패키지명] | yarn upgrade [패키지명] |
참조