npm yarn 무엇이고 어떤 차이??

김정민·2022년 5월 24일
4
post-thumbnail

프로젝트를 진행할 때 많이 쓰이는 패키지 관리 툴로는 대표적으로 npm과 yarn이 있습니다.
항상 프로젝트를 진행할 때 이번에는 어떤거를 쓸지 고민하다가 선택을 하게되는데, 정확히 이것들은 무엇이고 어떤 차이가 있는지 정리를 하고자 한다!!

npm과 yarn

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

그리고 명령 줄 인터페이스(Command-line interface, CLI)를 통해 패키지 설치 및 삭제뿐 아니라 패키지 버전 관리, 의존성 관리도 편리하게 할 수 있습니다.

자바스크립트 패키지 관리자란

여기서 패키지란 npm에 업로드된 노드 모듈을 말합니다.
다양한 자바스크립트 프로그램이 패키지라는 이름으로 npm에 등록되어 있고, 패키지가 다른 패키지를 사용할 경우 의존 관계를 가지기도 합니다.
이러한 패키지들을 사용하기 위해서는 다운로드, 설치, 업데이트, 의존성 관리, 제거 등 복잡한 상황들이 많이 생기는데 패키지 매니저는 이러한 과정들을 자동화하여 편리하고 안전하게 수행할 수 있도록 해줍니다.

npm

NPM(Node Package Manager)은 자바스크립트 언어를 위한 패키지 관리자로, Node.js의 기본 패키지 관리자입니다.
이 NPM 툴을 이용하여사람들이 Node패키지를 만들고, 업로드하며 공유할 수 있어서 누구나 게시된 패키지를 사용할 수 있습니다. 개발자 입장에서는 단 몇 줄의 command로 게시된 패키지들을 설치받아서 사용할 수 있습니다.

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

npm 명령어

npm 명령어
npm을 사용하기 위해서는 몇가지 명령어를 알아둘 필요가 있는데, 프론트엔드 개발을 위해서 사용하는 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 레지스트리와 호환하면서 속도나 안정성 측면에서 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보다 빠릅니다.
(하지만 npm 5.0 버전은 그 아래 버전들보다 5배는 더 빠르다고 npm 개발자들이 언급하였다고 합니다. 그리고 그 이후 npm V6.10.1과 yarn V1.17.3으로 install 속도 실험을 하였는데, yarn이 승리하였지만 그 차이는 아주 근소한 차이라고 하여서, 이제는 거의 차이가 없어졌다고 볼 수 있는 문제인 것 같습니다.)

보안

yarn은 보안 측면에서 npm보다 더 안전한 것으로 알려져 있습니다. npm은 자동으로 패키지에 포함된 다른 패키지 코드를 실행합니다. 이 특징은 편리하지만 안정성을 위협할 수 있습니다. 이로 인해 보안 시스템에 몇 가지 취약성이 발생하며 나중에 심각한 문제가 발생할 수 있습니다. 반면에 yarn은 yarn.lock 또는 package.json파일에 있는 파일만을 설치합니다. 보안은 yarn의 핵심 기능 중 하나이지만 최근 npm의 업데이트에서 npm의 보안 업데이트도 크게 향상되었습니다.

나는 무엇을 사용할까?

저는 개인적으로 주변에서 yarn을 많이 추천해서 처음부터 npm 없이 yarn으로 모든걸 진행하였습니다, 하지만 최근 next vercel 배포에서 yarn이 미흡해서 생겼었던 이슈가 있었어서.. 처음 npm부터 시작해서 yarn의 필요성을 느끼며는 다시 사용해보려고 합니다!!

0개의 댓글