- 자바스크립트 패키지 매니저
- node 개발환경에서는 npm과 yarn을 패키지 매니저로 사용
- 개발환경에서는 거의 차이가 없음
- 우선 npm과 yarn은 모두 자바스크립트 패키지 매니저
- 여기서 패키지는 npm에 업로드된 노드 모듈을 말함(라이브러리와 유사함)
- 이 패키지들은 서로 의존 관계를 가지기도 하는데, 패키지 매니저를 사용하게 되면 다운로드, 설치, 의존성 관리, 제거 등을 보다 편하게 할 수 있는 장점을 가짐
- npm(node package manager)
- 노드 환경에서 사용하는 다양한 패키지 관리
- npm registry라고 불리는 공개적인 패키지들로 구성된 데이터베이스를 가지고 있음
- yarn
- npm의 부족한 부분을 개선하기 위해 facebook에서 개발
- 기본적으로 yarn은 npm이 사용하는 동일한 npm 구조에 의존
- 따라서 패키지의 레지스트리에 대한 것은 바뀌지 않고 설치 절차가 바뀐 것으로 이해하면 됨
- yarn이 npm보다 나은 점
- 속도가 더 빠름
- npm은 필수 단계를 순차적으로 진행하는 경향이 있기 때문에 다음 패키지를 설치하기 위해서는 이전 패키지를 완전히 설치해야 함
- 반면에 yarn은 동시에 여러 패키지들을 설치할 수 있기 때문에 속도 면에서 향상된 모습을 보임
- npm 5버전 이후로는 속도가 많이 향상되어 거의 차이가 없는 수준이라고 함
- 보안성이 우수
- npm은 의존 관계를 가지는 다른 패키지들이 즉시 포함되도록 함, 편리하다고 할 수 있지만 보안문제에서는 취약점을 불러오기도 함
- 반면 yarn은 yarn.lock, package.json 파일에 있는 것들만 설치를 하기 때문에 모든 환경에서 같은 패키지를 설치하는 것을 보장
- 패키지 잠금 파일
- npm은 package-lock.json, yarn은 yarn.lock 파일을 패키지 잠금 파일로 사용
- npm과 yarn 중 하나 선택?
- yarn은 비교적 디스크 용량을 많이 먹는 편이라고 함
- npm도 속도 등 여러 면에서 개선되어 차이가 미묘한 수준
- 따라서 입맛에 따라 선택하면 됨