npm과 yarn의 차이는 무엇일까?
✔️ npm? yarn?
npm과 yarn은 모두 Node.js 패키지 관리자로, 결론부터 말하면 yarn이 npm에서 부족했던 기능들을 보충해서 출시한 것이라고 할 수 있는데요. 현재는 npm도 계속 개선된 버전이 나와서 사실상 둘의 사용은 취향 차이라고 봐도 무방합니다.
npm
전 세계적으로 가장 많은 이들이 사용하고 있는 패키지 관리자 입니다. Node.js로 만들어진 모듈을 쉽게 설치 및 관리할 수 있으며 개발자 입장에서는 명령어를 몇 줄 입력하기만 하면 공개된 모듈을 설치할 수 있으니 매번 직접 찾아서 모듈을 설치하는 수고를 덜어줍니다.
yarn
2016년 페이스북에서 만든 자바스크립트 패키지 매니저, npm의 단점인 속도(performance)
, 안정성(stability)
, 보안성(security)
을 보완하여 나온 것입니다.
👇yarn 관련 문서
https://engineering.fb.com/2016/10/11/web/yarn-a-new-package-manager-for-javascript/
✔️ npm과 yarn 차이점
앞서 말씀드렸듯이 yarn은 npm보다 보안성이 뛰어납니다. npm은 패키지를 설치할 때 자동으로 코드와 의존성을 실행할 수 있도록 허용하였습니다. 이로 인해 보안에 취약점이 발생하였는데, 현재는 npm도 보안 업데이트를 거듭하며 보안성이 향상되긴 하였습니다.
그리고 yarn은 npm보다 빠릅니다. 패키지 설치 프로세스를 처리하는 방법이 다르기 때문인데요. npm은 패키지를 한 번에 하나씩 순차적으로 설치하지만, yarn은 다운받은 패키지 데이터를 캐시(cache)에 저장하여 중복 데이터는 다운로드 하지 않고 캐시에 저장된 파일을 활용하구요. 패키지를 설치할 때 병렬로 처리하기 때문에 npm보다 속도가 빠릅니다.
✔️ npm 명령어
- npm init : package.json 생성
- npm install : package.json 파일 및 해당 종속성에 나열된 모든 모듈을 설치
- npm install 패키지명@버전 : 특정 패키지의 특정 버전 설치
- npm install 주소 : 특정 저장소 내 패키지 설치
- npm install 패키지명 -g : 글로벌 설치
- npm uninstall : 패키지 삭제
- npm update : 패키지 업데이트
- npm dedupe : 중복 설치된 패키지 정리
✔️ npm과 yarn 명령어 비교
명령어 | npm | yarn |
---|---|---|
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 [패키지명] |
✔️ yarn 설치 방법
1
npm install yarn --global
yarn은 위와 같이 npm을 통해서 설치할 수 있습니다.
1
2
brew update
brew install yarn
만약 맥 사용자라면 brew 통해 설치하는 것도 가능합니다.
✔️ 무조건 yarn을 사용하는 것이 좋은걸까?
앞서 말씀드린 내용에 따르면 npm 대신 무조건 yarn이 좋은 것이라고 생각할 수 있는데요. 사실 yarn도 단점은 존재합니다. yarn은 npm보다 디스크 용량을 좀 더 잡아먹는 편이라고 하더라고요. 현재는 npm도 많이 개선되어 속도 측면에서도 yarn과 별반 차이가 없고 아직까지 점유율은 npm이 더욱 높기 때문에 둘 중 어떤 것을 사용할지는 개발자 취향대로 고르면 될 것 같습니다 😊
참고 사이트
🔔포스팅 공지
개인 공부 기록용 블로그 입니다.
잘못된 부분이 있을 시 메일이나 댓글로 지적해주시면 감사드리겠습니다 :)
댓글남기기