DH의 개발 공부로그
[IT] npm vs yarn의 차이점? 본문
npm과 yarn
npm
과 yarn
은 node 개발 환경에서의 패키지 매니저입니다.
전 세계의 개발자들이 자바스크립트로 만든 다양한 패키지를 npm 온라인 데이터베이스에 올리면 npm, yarn
과 같은 패키지 관리자를 통해 설치 및 삭제가 가능합니다.
또한 명령 줄 인터페이스(Command-line interface, CLI)를 통해 패키지 설치 및 삭제뿐 아니라 패키지 버전 관리, 의존성 관리도 편리하게 할 수 있습니다.
그렇다면 npm
과 yarn
의 차이점이 무엇인지 확인해 보겠습니다.
npm
NPM
은 Node Package Manager의 약자로 노드를 설치할 때 자동으로 설치되는 기본 패키지 관리자입니다.NPM
툴을 이용하여 사람들이 Node패키지를 만들고, 업로드, 공유할 수 있어 누구나 게시된 패키지를 사용할 수 있습니다. 또한 단 몇 줄의 command로 게시된 패키지들을 설치/제거가 가능합니다.
설치
npm
은 기본적으로 노드를 다운로드하면 자동으로 설치 되기 때문에 노드 설치 후 다음과 같은 명령을 통해 설치되었는지 확인할 수 있습니다.
$ node -v
$ npm -v
yarn
yarn
은 2016년 페이스북에서 npm
의 보안 및 성능 문제 등을 개선하여 npm
을 대체하기 위해 개발된 새로운 패키지 관리자입니다.npm
과 같은 기능을 수행하나, npm
레지스트리와 호환하면서 속도나 안정성 측면에서 npm
보다 향상되었습니다.
설치
yarn
은 npm
을 통해 설치해야 합니다.
$ npm install yarn --global
npm과 yarn의 차이점?
1. 속도
npm
과 yarn
의 주요 차이점 중 하나는 패키지 설치 프로세스를 처리하는 방법입니다. npm
은 패키지를 한 번에 하나씩 순차적으로 설치하지만, yarn
은 여러 패키지를 동시에 가져오고 설치하도록 최적화되어 있어 패키지 설치 속도 측면에서 yarn
이 npm
보다 빠릅니다.
하지만 최근에는 여전히 yarn
이 빠르지만 아주 근소한 차이라고 합니다.
2. 보안
yarn
이 보안 측면에서 npm
보다 더 안전한 것으로 알려져 있습니다. 그 이유가 npm
은 자동으로 패키지에 포함된 다른 패키지 코드를 실행하는 특징이 있는데, 이 특징은 편리하지만, 안정성을 위협할 수 있습니다.
이에 따라 보안 시스템에 몇 가지 취약성이 발생하기도 하며 나중에 심각한 문제가 발생할 수도 있습니다.
반면 yarn
은 yarn.lock
또는 package.json
파일에 있는 파일만을 설치하기 때문에 보안적인면에서 yarn
이 더 안전하다는 결과가 있습니다.
하지만 최근 npm
의 업데이트에서 npm
의 보안 업데이트도 크게 향상되었습니다.
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 [패키지명] |
결론
결론적으로 둘 중에 무엇을 사용하는 게 좋은지는 npm
과 yarn
둘 다 패키지를 관리하기에 좋은 툴이며, 둘 다 지속적으로 관리가 되고 있고, 최근에는 업데이트를 통해 차이가 근소해졌기 때문에 지금 상황에서 둘 중에 고르는 것은 개인의 취향 차이라고 생각 합니다. 그래도 저는 아직은 속도적인면에서 yarn
이 빠르기 때문에 yarn
을 사용하고 있습니다.
'IT개발상식' 카테고리의 다른 글
[자료구조] 스택(STACK), 큐(QUEUE) 비교/정리 하기! (0) | 2023.05.26 |
---|---|
[Vercel] 버셀 프론트 배포 후 새로고침 시 404 에러 (0) | 2023.05.12 |
[Vercel] Vercel로 프론트 배포하기! (0) | 2023.03.29 |
[IT 지식] API란 무엇인가? (0) | 2023.03.28 |
[SWC] SWC란 무엇인가? (0) | 2023.03.27 |