NPM, NPX, YARN

쏘뽀끼·2024년 7월 29일
0

react

목록 보기
6/25

개발을 하면서 라이브러리를 다운받을 때 npm을 사용하곤 했다.
하지만 정작 어떤 뜻인지 또 npx와 yarn과 각각 어떤 특징을 지녔는지는 모르고 그냥 하라니까 맞다보다~ 하고 npm만 사용하곤 했다!

이번 기회에 이들의 차이점을 알아보자! 😊

NPM(Node Package Manager)

Node Package Manager의 약자로 Node.js의 기본 패키지 관리자
npm은 Node.js와 함께 설치되며, Node.js 애플리케이션의 종속성을 관리하고 패키지를 설치, 업데이트, 제거하는 데 사용된다.

NPM역사

npm은 온전히 자바스크립트로 작성되었다.
모듈 패키징이 엉망으로 완성되는 것을 관찰하고 아이작 Z 슐루터가 개발했다.

주요기능

  • 패키지 설치:
    -dependency에 설치: npm install package name —save
    -devDependency에 설치: npm install package name --save-dev
  • 패키지 제거: npm uninstall package name
  • 패키지 업데이트: npm update package name
  • 패키지 실행: npm run script_name
  • 글로벌 패키지
    • 설치 npm install -g package name
    • 제거 npm uninstall -g package name
  • 패키지 초기화: npm init
    • package.json 파일로 npm 프로젝트 초기화 명령어
  • 프로젝트 생성: npm create package name
    • 내부적으로 npx를 사용해서 패키지를 활용하여 프로젝트 생성




특징

  • node.js와 함께 설치된다.
  • ".npmrc"파일을 통해 설정 가능하다.
  • "package-lock.json"파일을 사용하여 패키지 버전을 고정한다.



NPX(Node Package Execute)

Node Package Execute의 약자로 이름 그대로 Node 패키지를 실행하는 도구이다.
Node.js를 설치하면 자동으로 설치된다.
npx를 사용하면 npm으로 로컬 또는 글로벌로 다운로드 받지 않은 패키지도 실시간으로 설치해 실행 가능하다.

주요기능

  • 일회성 패키지 실행 : npx package name
  • 특정 버정 패키지 실행: npx pacage name @ version

특징

  • npm과 함께 설치된다.
  • 개발 의존성을 줄이고 필요한 경우 패키지를 설치하여 실행한다.
  • 임시적으로 패키지를 실행할 때 유용하다.
    -전역적으로 설치되지 않으므로 장기적인 관리에 주의해야 한다.


YARN

yarn은 페이스북에서 개발한 패키지 매니저이다.
더 빠르고, 더 안전하며, 더 확정적인 의존성 관리를 목표로 개발되었다. (병렬)

주요 기능

  • 패키지 설치

    • 로컬: yarn add package name
    • 전역: yarn global add package name
  • 패키지 제거

    • 로컬 yarn remove package name
    • 전역 yarn global remove package name
  • 패키지 업데이트 yarn upgrade package name

  • 패키지 실행 yarn run package name

특징

  • 병렬로 패키지를 설치해 속도가 향상된다.
  • yarn.lock파일을 사용해서 더 확정적인 의존성 트리를 생성한다.
  • 오프라인 모드 지원: 이전에 설치된 패키지를 다시 다운로드 하지 않고 설치가 가능하다.

비교

기능/특징NPMNPXYARN
기본 제공Node.js 기본 패키지 관리자NPM에 포함됨 (5.2.0 이상)별도 설치 필요
패키지 설치 속도보통N/A빠름
의존성 고정 파일package-lock.jsonN/Ayarn.lock
병렬 설치 지원아니요아니요
오프라인 모드아니요아니요
패키지 실행npm run <script_name>npx <package_name>yarn run <script_name>
사용 편의성보통간편함사용 편의성 높음

0개의 댓글