npm VS yarn

Seuling·2022년 12월 1일
0
post-thumbnail

npm VS yarn ??

둘다 패키지 관리자임!

패키지 관리자가 뭔데요...?

패키지 관리자는 프로젝트의 종속성을 자동으로 처리하는 데 도움이 되는 도구이다.

패키지는 뭐죠...?

패키지란 관리를 위해 모듈에 몇 가지 정보를 추가한 것으로 결국 모듈이지만 조금 더 큰 단위라고 볼 수 있다.

전 세계의 개발자들이 제작한 다양한 자바스크립트 코드를 npm 이나 yarn의 온라인 데이터베이스에 업로드하여 게시하며 공유하는데 이것을 프로그램 Package(패키지)라고 하며 이러한 다양한 프로그램 패키지들은 누구나 사용 가능하다.

모듈은 뭐죠...?

모듈(module)이란 프로그램을 구성하는 구성 요소로, 관련된 데이터와 함수를 하나로 묶은 단위를 의미한다.

보통 하나의 소스 파일에 모든 함수를 작성하지 않고, 함수의 기능별로 따로 모듈을 구성한다.
이러한 모듈을 합쳐 하나의 파일로 작성하는 방식으로 프로그램을 만들게 된다.

결론적으로 패키지 관리자는? 자바스크립트 라이브러리를 모아두고, 설치와 관리를 돕는 프로그램 정도로 이해하면 될 것 같다.

npm이 뭐지??

  • npm(Node Package Manager)
  • 자바스크립트 언어를 위한 패키지 관리자로 Node.js의 기본 패키지 관리자
  • 전세계적으로 가장 많은 이들이 사용하고 있는 패키지 관리 툴
    이러한 관리 툴을 이용하여 Node.js로 만들어진 모듈을 웹에서 받아서 쉽게 설치하고 관리해주는 프로그램으로 개발자 입장에서는 단 몇 줄의 command로 기존 공개된 모듈들을 설치하고 활용할 수 있다.
    또한 그렇게 설치된 모듈들이 업데이트되었는지를 체크해주는 등 JavaScript로 진행하는 프로젝트를 굉장히 편하게 진행할 수 있도록 도움을 준다.
  • command-line client인 npm과 온라인 데이터베이스인 npm registry로 이루어져 있다.
    일반적으로 command-line client를 npm이라고 생각하는데, 실제로 npm에는 npm registry까지 포함되어 있다.

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 (Yet Another Resource Navigator)
  • 페이스북에서 만든 자바스크립트 패키지 매니저
  • npm과 같은 기능을 수행하지만 npm의 부족한 부분들을 개선하기 위해 개발됨
  • Plug'n'Play : 프로젝트의 종속성을 매핑하는 .pnp.cjs 파일을 생성하여 보다 최적의 종속성 트리가 생성되고 프로젝트 시작 및 패키지 설치가 빨라짐
  • 무설치 : 이 기능은 .pnp.cjs 파일을 사용하여 오프라인 캐시의 패키지를 매핑하는 Plug'n'Play와 함께 작동함. 이렇게 하면 저장된 패키지를 빠르게 검색하고 설치할 수 있다.
  • 라이선스 검사기: Yarn에는 패키지를 다운로드하고 설치하는 동안 사용되는 내장 라이선스 검사기가 함께 제공

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 : 중복 설치된 패키지들을 정리해주는 명령어

공통점

  1. 프로젝트에 사용되는 종속성의 정확한 목록을 추적하는 버전 잠금 파일을 자동으로 생성한다.
  2. 작업 공간을 지원하므로 단일 레포지토리에서 수많은 프로젝트의 종속성을 관리할 수 있다.
  3. npm의 npx 명령과 Yarn의 yarn dlx 명령을 사용하면 두 관리자에서 원격으로 스크립트를 실행할 수 있다.

차이점

종속성관리

npm은 종속성을 순차적으로 설치, yarn은 병렬적으로 설치

성능 및 속도

npm은 큰 파일을 설치할 때 속도가 느리지만, yarn은 종속성을 병렬로 설치하기에 대용량 파일을 설치할 때 더 빠르다.
또한, yarn은 대기 시간이 거의 없이 오프라인에서 종속성을 설치할 수 있는 Zero-Install 기능을 지원한다.

보안

  • npm
    npm은 패키지가 설치될 때 자동으로 코드와 의존성을 실행할 수 있도록 허용했다. 이 특징은 편리한 기능이지만 안정성을 위협할 수 있습니다. 특히나 보장된 정책 없이 등록한 패키지가 존재할 수 있다는 점에서 더욱 위험도가 높다.

  • yarn
    패키지를 다운로드하는 동안 위험한 스크립트를 다운로드하거나 종속성 문제를 일으키지 않도록 패키지 라이센스 정보를 사용하여 백그라운드에서 보안 검사를 실행한다.

장단점

NPM

장점

  • 이전 버전의 워크플로에 익숙한 개발자를 위한 용이성!
  • 하드 드라이브 공간을 절약하기 위해 최적화된 로컬 패키지 설치

단점

  • 온라인 레지스트리에서 패키지를 설치하려면 네트워크 액세스가 필요함
  • 보안 취약점

YARN

장점

  • 병렬 설치, Plug'n'Play 및 Zero-Install과 같은 기능을 지원하여 성능 향상
  • More secure

단점

  • 이전 버전의 Node.js(버전 5 미만)에서는 작동X
  • 네이티브 모듈 설치 문제

어느것을 선택?

npm은 이전 버전의 워크플로에 익숙하고 현재 워크플로에 만족하는 개발자가 선호하며 하드 드라이브 공간을 절약하면서 적절한 사용자 경험을 제공한다. 반면 Yarn은 Plug'n'Play 및 Zero-Install과 같은 고급 기능을 제공하여 성능과 보안을 약간 향상시키지만 하드 디스크 공간을 희생한다.

yarn의 병렬적 패키지 설치로 인한 가벼움, 또한 버전의 차이로 인한 버그 방지 등의 기능은 yarn이 npm보다 더 적절할 것 같아 사용해보려한다!

TMI...

npm 은 대문자로 쓰이지않는다!

Yarn 설치가 안되는데...
맥북 m1 zsh: command not found: yarn 해결법
이글을 보고 해결함!

Reference

Yarn vs NPM: Which Package Manager is Best to Choose?
[개발상식]npm과 yarn
[ Yarn - Package Manager ] 설치 및 사용방법(사용 가이드)

[NODE.JS] NPM이란 - 외부 모듈 사용하는 방법
[Docs] npm이 뭐지?

Npm vs Yarn

profile
프론트엔드 개발자 항상 뭘 하고있는 슬링

0개의 댓글