[javascript] npm과 yarn

Posted by : on

Category : javascript


항상 쓰면서도 궁금했던 npm과 yarn의 차이점! 이번에 제대로 짚고 넘어가보자

npm과 yarn은 javascript 런타임 환경인 노드(Node.js)의 패키지 관리자이다. 전세계의 개발자들이 javascript로 만든 다양한 패키지를 npm 온라인 데이터베이스에 올리면, npm 또는 yarn과 같은 패키지 관리자를 통해 설치 및 삭제가 가능하다.

npm

기존에 필요한 기능을 추가하기 위해 직접 작성하거나 github를 통해 다운로드해서 사용해야 하는 불편함을 헤소하기 위해 npm이 나타났으며, node.js를 설치하기만 하면 (기본적으로 npm은 Node.js 내에 내장되어 있다.) 명령어 한 줄로 기능의 추가가 가능하다.

npm 명령어

  • npm init : package.json 생성
  • npm install : package.json 파일 및 해당 종속성에 나열된 모든 모듈을 설치
  • npm install package_name@버전 : 특정 패키지의 특정 버전 설치
  • npm install 주소 : 특정 저장소 내 패키지 설치. 주로 github을 이와 같이 설치한다.
  • npm install package_name -g : 글로벌로 설치. 로컬의 다른 프로젝트도 이 패키지를 사용 가능하게 된다.
  • npm uninstall : 패키지 삭제 명령어
  • npm update : 설치한 패키지들을 업데이트해준다.
  • npm dedupe : 중복 설치된 패키지들을 정리해주는 명령어

yarn

yarn은 2016년 페이스북에서 개발한 패키지 관리자이다. React와 같은 프로젝트를 진행하며 겪었던 어려움을 해결하기 위해 개발되었고, npm과 같은 기능을 수행하나 npm registry와 호환하면서 속도나 안정성 측면에서 npm보다 향상되었다.

yarn 명령어

  • yarn init : package.json 생성
  • yarn or yarn install : package.json 파일 및 해당 종속성에 나열된 모든 모듈을 설치
  • yarn add package_name@버전 : 특정 패키지의 특정 버전 설치
  • yarn add 주소 : 특정 저장소 내 패키지 설치. 주로 github을 이와 같이 설치한다.
  • yarn global add package_name : 글로벌로 설치. 로컬의 다른 프로젝트도 이 패키지를 사용 가능하게 된다.
  • yarn remove : 패키지 삭제 명령어
  • yarn upgrade : 설치한 패키지들을 업데이트해준다.
  • npm dedupe : 중복 설치된 패키지들을 정리해주는 명령어

npm vs yarn

속도

npm과 yarn의 주요 차이점 중 하나는 패키지 설치 프로세스를 처리하는 방법이다.
npm은 패키지를 한 번에 하나씩 순차적으로 설치하지만, yarn은 여러 패키지를 동시에 가져오고 설치하도록 최적화되어 있어 패키지 설치 속도 측면에서 yarn이 npm보다 빠르다. 또한 yarn은 다운받은 패키지 데이터를 캐시(cache)에 저장하여 중복된 데이터는 다운로드 하지 않고, 캐시에 저장된 파일을 활용함으로써 npm에 비해 패키지 설치 속도가 매우 빠르다.

안정성, 보안성

yarn은 보안 측면에서 npm보다 더 안전한 것으로 알려져있다. npm은 자동으로 패키지에 포함된 다른 패키지 코드를 실행한다. 이 특징은 편리하지만 안정성을 위협할 수 있다. 이로 인해 보안 시스템에 몇 가지 취약성이 발생하며 나중에 심각한 문제가 발생할 수 있다. 반면에 yarn은 yarn.lock 또는 package.json 파일에 있는 파일만을 설치하며, yarn.lock은 모든 디바이스에 같은 패키지를 설치하는 것을 보장하기 때문에 버전의 차이로 인해 생기는 버그를 방지해준다.

(그러나 npm의 업데이트로 인해 npm과 yarn의 속도 차이 및 보안적인 문제는 근소한 차이라고 한다.)

하나만 사용하기

서로 협업하는 개발자 A, B가 있는 경우 A는 yarn으로 init한 뒤 개발을 진행하고, B는 npm으로 install을 하게 된다면 B는 최초 세팅된 패키지들의 버전 정보가 담긴 yarn.lock 파일을 사용하지 않으면서 package.json에 명시된 규칙에 따라 버전업이 된 패키지들로 package-lock.json 파일을 다시 생성하게 된다.
결과적으로 npm, yarn을 동시에 사용하게 되면 의존성의 버전이 서로 불일치하는 경우가 생길 수 있으므로 하나만 선택하여 사용하자.

<참고 : https://velog.io/@jma1020/npm-yarn-%EB%AC%B4%EC%97%87%EC%9D%B4%EA%B3%A0-%EC%96%B4%EB%96%A4-%EC%B0%A8%EC%9D%B4
https://honggom.tistory.com/184?category=949779 >


About Hyerin Jeon

안녕하세요, 전혜린 (Hailey) 입니다! 주니어 프론트엔드 개발자이며, 리액트를 사용하고 있습니다 :D

-->
Useful Links