본문 바로가기
IT개념

[IT개념] npm과 yarn

by JDonly 2024. 6. 24.

💎 NPM (Node Package Manager)

개념 : NPM은 Node.js의 기본 패키지 매니저로, Node.js 애플리케이션 개발에 필요한 패키지를 관리하는 도구입니다.
특징

  • 기본 제공: Node.js 설치 시 기본으로 제공됩니다.
  • 레지스트리: 공식 npm 레지스트리에서 수많은 패키지를 이용할 수 있습니다.
  • 스크립트: package.json 파일 내에서 스크립트를 정의하여 반복 작업을 자동화할 수 있습니다.
  • 커스터마이징: .npmrc 파일을 통해 설정을 커스터마이징할 수 있습니다.

 

💎 Yarn (Yet Another Resource Negotiator)

개념: Yarn은 Facebook에서 개발한 JavaScript 패키지 매니저로, NPM의 단점을 보완하기 위해 만들어졌습니다.
특징

  • 속도: 병렬 처리로 인해 패키지 설치 속도가 빠릅니다.
  • 결정적 설치: yarn.lock 파일을 통해 동일한 환경에서 동일한 의존성을 설치합니다.
  • 오프라인 모드: 한번 설치된 패키지는 캐시를 이용해 오프라인에서도 재설치할 수 있습니다.
  • 보안: 설치 시 체크섬을 검증하여 패키지의 무결성을 확인합니다.

 

⚡공통점 및 기능

0. 의존성 관리

  • 두 도구 모두 package.json 파일을 사용하여 프로젝트의 의존성을 관리합니다.
    NPM과 Yarn은 모두 JavaScript 프로젝트에 필요한 의존성(dependency)을 관리하기 위해 사용됩니다.
    이들 도구는 패키지 설치, 업데이트, 제거와 같은 작업을 통해 프로젝트의 의존성을 효율적으로 관리할 수 있게 도와줍니다.

1. 프로젝트 초기화 및 관리

  • NPM: npm init 명령어를 통해 새 프로젝트를 초기화하고 package.json 파일을 생성할 수 있습니다. 이 파일은 프로젝트의 메타데이터를 포함하고 의존성을 관리합니다.
  • Yarn: yarn init 명령어를 통해 동일한 작업을 수행할 수 있습니다.

2. 스크립트 실행 : 

  • NPM: package.json 파일 내의 scripts 섹션에 정의된 스크립트를 실행할 수 있습니다. 예를 들어, npm run build는 빌드 스크립트를 실행합니다.
  • Yarn: yarn도 동일한 기능을 제공하며, yarn build와 같이 scripts 섹션에 정의된 스크립트를 실행할 수 있습니다.
  • NPM과 Yarn 모두 package.json 내 스크립트를 정의하여 다양한 작업을 자동화할 수 있습니다.

3. 버전 관리

  • NPM: npm version 명령어를 통해 프로젝트의 버전을 관리할 수 있습니다. 예를 들어, npm version patch는 패치 버전을 증가시킵니다.
  • Yarn: yarn version 명령어도 동일한 기능을 제공하여 버전 관리를 지원합니다.

4. 패키지 퍼블리싱 및 배포

  • NPM: npm publish 명령어를 사용하여 패키지를 NPM 레지스트리에 퍼블리시할 수 있습니다.
  • Yarn: yarn publish 명령어를 통해 패키지를 퍼블리시할 수 있습니다.

5. 패키지 관리

  • NPM: npm ls 명령어로 현재 설치된 패키지 트리를 확인할 수 있으며, npm outdated 명령어로 업데이트 가능한 패키지를 확인할 수 있습니다.
  • Yarn: yarn list 명령어로 설치된 패키지를 확인할 수 있으며, yarn outdated 명령어로 업데이트 가능한 패키지를 확인할 수 있습니다.

6. 모노레포 지원

  • NPM: 기본적으로 모노레포 지원을 제공하지 않지만, lerna와 같은 도구를 사용하여 모노레포를 관리할 수 있습니다.
  • Yarn: Yarn의 워크스페이스 기능을 사용하여 모노레포를 효율적으로 관리할 수 있습니다.

7. 캐시 관리

  • NPM: NPM은 기본적으로 패키지를 캐시하지만, 명시적으로 관리하는 기능은 제한적입니다.
  • Yarn: Yarn은 더 강력한 캐시 관리 기능을 제공하여 설치된 패키지를 오프라인에서도 사용할 수 있게 합니다.

 

⚡차이점

항목 npm yarn
패키지 설치 npm install <package_name> yarn add <package_name>
패키지 제거 npm uninstall <package_name> yarn remove <package_name>
패키지 업데이트 npm update <package_name> yarn upgrade <package_name>
프로젝트 초기화 npm init <package_name> yarn init <package_name>
의존성 관리 package.json 파일을 통해 프로젝트의 의존성을 관리 yarn.lock 파일을 통해 프로젝트의 의존성을 고정
모든 의존성 설치 npm install yarn install
개발 의존성 설치 npm install <package_name> --save-dev 또는 npm i <package_name> -D yarn add <package_name> --dev 또는 yarn add <package_name> -D
글로벌 패키지 설치 npm install -g <package_name> yarn global add <package_name>
의존성 고정 npm shrinkwrap 또는 package-lock.json 파일 사용 yarn.lock 파일 사용
오프라인 모드 기본적으로 오프라인 모드 없음 오프라인 모드 지원
설치 속도 단일 스레드로 처리 병렬 처리로 더 빠
보안 일부 보안 기능 제공 체크섬 검증을 통한 강화된 보안
스크립트 정의 package.json 파일에서 정의 package.json 파일에서 정의
기본 제공 Node.js 설치 시 기본 제공 별도 설치 필요
레지스트리 공식 npm 레지스트리 사용 공식 npm 레지스트리 사용
커스터마이 .npmrc 파일 사용 .yarnrc 파일 사용

 

설치 속도 단일 스레드로 처리 병렬 처리로 더 빠름
결정적 설치 package-lock.json 파일 사용 yarn.lock 파일 사용
오프라인 모드 기본적으로 오프라인 모드 없음 오프라인 모드 지원
보안 일부 보안 기능 제공 체크섬 검증을 통한 강화된 보안
명령어 npm install, npm uninstall 등 yarn add, yarn remove 등
커스터마이징 .npmrc 파일 사용 .yarnrc 파일 사용

 

⚡결론

NPM과 Yarn 모두 JavaScript 생태계에서 널리 사용되는 패키지 매니저로서 각각의 장단점을 가지고 있습니다.
NPM은 Node.js의 기본 패키지 매니저로 널리 사용되고 있으며, Yarn은 더 빠른 설치 속도와 결정적 설치, 오프라인 모드 지원 등의 기능으로 주목받고 있습니다.
프로젝트의 요구 사항과 개발 환경에 따라 적절한 도구를 선택하여 사용할 수 있습니다.