Node.js | npm vs yarn

trevor1107·2021년 2월 17일
0

npm이란?

npm(Node Package Manager)는 자바스크립트 런타임 환경인 Node.js의 기본 패키지 관리자이다. 그래서 npm을 통해 패키지(Package) 또는 모듈(module)이라고 불리는 자바스크립트 소프트웨어를 자신의 프로젝트에 설치할 수 있다. 또한 npm을 통해서 자신의 프로젝트에서 사용 중인 패키지들의 버전 업데이트도 관리할 수 있다.

https://www.npmjs.com 에서 node_modules라는 폴더에 패키지를 내려받아 저장하고, packgae.json이라는 파일에 설치된 패키지들의 정보들을 저장한다. 이렇게 패키지 명세를 하는 이유는 패키지의 용량이 크기때문에 명세를 통해서 다운받을 수 있도록 하기 위해서다.

npm의 3가지 구성요소

npm 웹사이트

웹 사이트에서 원하는 패키지를 찾을 수 있다. 구글에 npm 패키지명을 검색하면 npm에서 해당 패키지의 저장소 페이지를 안내해주는 것을 확인 할 수 있다.

CLI(Command Line Interface)

npm은 터미널에서 CLI를 통해 작동이 가능하다.
npm init -y를 통해 package.json 파일을 만들어 프로젝트를 시작할 수 있고,
npm install 패키지명으로 프로젝트에 패키지를 설치할 수도 있다.

저장소

npm에서는 패키지들을 모아놓은 공개 저장소가 존재한다. 유료 서비스를 이용하여 비공개 저장소도 사용이 가능하다.

local install or global install

  • local install : npm i 패키지명 명령어로 해당 프로젝트 내에서만 사용할 수 있는 패키지를 설치한다.
  • global install : npm i -g 패키지명 명령어로 모든 프로젝트에서 공용으로 사용할 수 있는 패키지를 설치한다.

*글로벌 패키지의 설치 경로는 아래와 같다.
macOS: /usr/local/lib/node_modules
Windows: c:\Users\%USERNAME%\AppData\Roaming\npm\node_modules

yarn이란?

페이스북에서 제작하고 운영하는 자바스크립트 패키지 관리자이다. npm의 단점을 보완하기 위해 만든 도구이다. 다운 받은 패키지 데이터를 캐시에 저장하여 중복된 데이터는 다운로드하지 않고, 캐시에 저장된 파일을 활용함으로써 패키지 설치속도가 매우 빠르다.

yarn도 npm과 마찬가지로 웹사이트, CLI, 저장소를 제공한다.

npm vs yarn

npm의 장점

  • 높은 점유율. 누적된 자료들과 거대한 커뮤니티 활동 규모를 자랑한다.
  • node의 기본 패키지 관리자라 별도의 설치가 필요하지 않다.

yarn의 장점

  • JSON Format을 사용하지 않는다.
  • 오프라인 모드가 가능하다.
  • 프로젝트 구성시 yarn install을 진행한 시점을 기준으로 버전정보가 yarn.lock이라는 파일에 저장되어 패키지 설치시점과 동일한 버전정보를 저장해두므로 새로운 환경을 구축할 때에도 동일한 버전정보를 가진 패키지를 구성하게 도와준다.

비교

속도

yarn이 조금 더 빠르나 npm5부터는 거의 차이가 없어질 정도로 npm도 업데이트를 꾸준히 하였다.

안정성

다양한 운영체제에서 두개 다 문제 없이 잘 작동한다! 안정성 굿!

보안성

npm은 패키지가 설치될 때 자동으로 코드와 의존성을 실행할 수 있도록 허용했다. 이 특징은 편리하면서 안정성을 위협한다. 특히나 정책 없이 등록한 패키지 제출할 수 있다는 점에서 더욱 위험도가 높다.
반면 yarn은 yarn.lock이나 package.json으로 부터 설치만 한다.
yarn.lock은 모든 디바이스에 같은 패키지를 설치하는 것을 보장하여 다른 버전으로 부터 생기는 문제를 해결해준다.

profile
프론트엔드 개발자

0개의 댓글