개발

[개발지식] npm vs yarn

김나나_ 2024. 7. 24. 11:09

📌 npm 과 yarn 이란?

  • npm 과 yarn 은 자바스크립트 런타임 환경인 노드(Node.js)의 패키지 관리자이다.
  • 전 세계의 개발자들이 자바스크립트로 만든 다양한 패키지를 npm 온라인 데이터베이스에 올리면 npm, yarn과 같은 패키지 관리자를 통해 설치 및 삭제가 가능하다.
    ( npm 온라인 데이터베이스: https://www.npmjs.com/)
  • 명령 줄 인터페이스(Command-line interface, CLI)를 통해 패키지 설치 및 삭제 뿐 아니라 패키지 버전 관리, 의존성 관리도 편리하게 할 수 있다.

 

📌 npm (Node Package Manager)

  • npm 은 노드 패키지 매니저는 Node Package Manager 의 줄임말로 노드를 설치할 때 자동으로 설치되는 기본 패키지 관리자이다.
  • npm 의 역할
    1. 온라인 플랫폼: 사람들이 노드 패키지를 만들고, 업로드 하고, 공유할 수 있는 공간으로 누구나 온라인 플랫폼(npm 레지스트리)에 게시된 패키지를 사용할 수 있다.
    2. 명령 줄 인터페이스(CLI): 온라인 플랫폼과 상호 작용하기 위해 명령 줄 인터페이스를 사용하며 패키지 설치 및 제거가 가능하다.
  • 설치: 노드를 다운로드하면 npm이 시스템에 자동으로 설치된다.
npm이 없었을 때는 필요로 하는 기능을 추가하기 위해서 직접 작성하거나 github을 통해 다운로드하여 사용해야 했다. 이러한 불편을 해소하기 위해 npm 이 나타났으며, Node.js 를 설치하기만 하면 명령어 한 줄로 기능의 추가가 가능하다.

 

 

npm 명령어

  • npm init : package.json 생성
  • npm install : package.json 파일 및 해당 종속성에 나열된 모든 모듈을 설치 / dependecies 설치
  • npm install 패키지이름@버전 : 특정 패키지의 특정 버전 설치
  • npm install 주소 : 특정 저장소 내 패키지 설치. 주로 github을 이와 같이 설치한다.
  • npm install 패키지이름 -g : 글로벌로 설치. 로컬의 다른 프로젝트도 이 패키지를 사용 가능하게 된다.
  • npm uninstall : 패키지 삭제 명령어
  • npm update : 설치한 패키지들을 업데이트
  • npm dedupe: 중복 설치된 패키지들을 정리하는 명령어 
* package.json 이란:
package.json 은 프로젝트 정보와 의존성(dependencies)을 관리하는 문서이다.
우리가 어떤 패키지(오픈소스)를 사용하는 지, 어떤 버전을 사용하는지 등을 기록함으로써 어느 곳에서도 동일한 개발 환경을 구축할 수 있게 해준다.

 

📌 yarn

  • yarn은 2016년 페이스북에서 개발한 패키지 관리자이다. 리액트(React)와 같은 프로젝트를 진행하며 겪었던 어려움을 해결하기 위해 개발되었다.
  • npm 레지스트리와 호환하면서 속도 안정성 측면에서 npm 보다 향상되었다.
  • 설치: yarn 은 npm 을 통해 설치한다.
npm install yarn --global

// 맥 사용자라면 brew 를 통해
brew update // homebrew를 최신 버전으로 update
brew install yarn

 

 

yarn 명령어

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

 

📌 npm과 yarn 의 차이점

1. 속도

  • npm은 패키지를 한 번에 하나씩 순차적으로 설치한다.
  • 그에 비해 yarn은 여러 패키지를 동시에 가져오고 설치하도록 최적화되어 있어 패키지 설치 속도 측면에서 yarn이 npm 보다 빠르다

2. 보안

  • yarn은 보안 측면에서 npm 보다 더 안전한 것으로 알려져 있다.
  • npm은 자동으로 패키지에 포함된 다른 패키지 코드를 실행한다. 이로 인해 보안 시스템에 몇 가지 취약성이 발생하며 나중에 심각한 문제가 발생할 수 있다.
  • 반면에 yarn 은 yarn.lock 또는 package.json 파일에 있는 파일만을 설치한다.
  • 보안은 yarn 의 핵심 기능 중 하나이지만 최근 npm 업데이트에서 npm 의 보안 업데이트도 크게 향상되었다.
2016~2017년 기준으로는 yarn 이 가시적으로 npm 보다 속도나 안정성이 뛰어났지만 npm 또한 발전을 거듭하며 단점을 많이 보완했기 때문에 현재 npm/yarn의 performance와 stability 차이는 그리 크지 않다고 봐도 무방하다. (yarn 이 약간 우세)
yarn의 병렬적 패키지 설치로 인한 가벼움, 또한 버전 차이로 인한 버그 방지 등의 기능은 yarn 이 npm 보다 더 좋은 툴이라고 할 수 있다. but npm의 강력한 장점은 사용자 수와 접근성이 매우 좋다.

각각의 장단점이 뚜렷하므로 툴 선택은 취향껏 선택하면 된다.

 

📌 정리

  • npm 과 yarn 은 자바스크립트 런타임 환경인 노드(Node.js)의 패키지 관리자이다. (패키지 관리 툴)
  • yarn 이 속도와 보안 측면에서 좀 더 우수하지만, npm는 사용자의 수가 많다는 장점이 있다.
  • 최근 npm 도 업데이트가 되고 있어 yarn 과의 성능, 보안성 차이는 그리 크지 않다.

 

 

 

참고 사이트:

https://joshua1988.github.io/vue-camp/package-manager/npm-vs-yarn.html#yarn

 

NPM vs Yarn | Cracking Vue.js

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

joshua1988.github.io

https://velog.io/@kysung95/%EA%B0%9C%EB%B0%9C%EC%83%81%EC%8B%9D-npm%EA%B3%BC-yarn

 

[개발상식] npm과 yarn

패키지 관리 툴로는 대표적으로 npm과 yarn이 있습니다.여러분들은 평소 어떠한 패키지 설치 모듈을 사용하나요?

velog.io