[개발환경] Npm, Yarn 차이

해피몬·2023년 4월 14일
0
post-thumbnail

npm과 Yarn은 모두 자바스크립트 패키지 매니저로, 프로젝트의 종속성(패키지)을 설치하고 관리하는 데 사용됩니다.

  • Npm (Node Package Manager): Node.js와 함께 기본적으로 제공되는 패키지 매니저입니다. Node.js 패키지의 설치, 업데이트, 삭제 등을 관리할 수 있습니다.
  • Yarn: Facebook에서 2016년에 npm의 단점을 보완하기 위해 만든 패키지 매니저입니다. 초기에는 성능과 안정성 면에서 npm보다 우수했지만, 현재는 npm도 많이 개선되었습니다.

차이

설치 속도와 캐싱

  • npm
    npm install 명령어를 통해 패키지를 설치합니다.
    설치된 패키지를 디스크에 캐시하긴 하지만, 캐시 활용이 비교적 제한적이었습니다. 그러나 이후 버전에서 package-lock.json을 통해 설치 속도가 많이 개선되었습니다.
    npm install 명령어로 패키지를 설치합니다.

  • yarn
    설치된 패키지를 더 적극적으로 캐시하여, 동일한 패키지 설치 시 속도가 훨씬 빠릅니다.
    병렬 설치를 기본적으로 지원하여, 여러 패키지를 동시에 설치해 설치 시간을 단축합니다.
    yarn install 명령어로 패키지를 설치합니다.

잠금 파일 (package-lock.json vs yarn.lock)

  • npm (package-lock.json)
    package-lock.json 파일은 프로젝트에 설치된 정확한 패키지 버전과 종속성 구조를 기록합니다. 이를 통해 다른 개발자가 동일한 종속성을 설치할 수 있도록 보장합니다.
    모든 설치된 패키지의 해시와 URL도 포함되어 있어, 패키지의 무결성을 검증할 수 있습니다.

  • yarn(yarn.lock)
    yarn.lock 파일은 package-lock.json과 유사하게 모든 종속성과 정확한 버전을 기록하여 일관된 설치를 보장합니다.
    초기 버전의 Yarn은 npm보다 잠금 파일 처리와 성능에서 더 우수했지만, npm의 개선으로 차이가 많이 줄어들었습니다.

명령어 차이

  • npm
패키지 설치: npm install <package>
패키지 제거: npm uninstall <package>
특정 버전 설치: npm install <package>@<version>
개발 의존성 설치: npm install <package> --save-dev
  • yarn
패키지 설치: yarn add <package>
패키지 제거: yarn remove <package>
특정 버전 설치: yarn add <package>@<version>
개발 의존성 설치: yarn add <package> --dev

병렬 설치와 오프라인 모드

  • npm
    초기 버전의 npm은 병렬 설치를 지원하지 않아, 설치 속도가 느렸습니다. 그러나 이후 버전에서는 병렬 설치가 지원됩니다.
    오프라인 설치는 기본적으로 제공되지 않습니다. 캐시된 파일이 있다면 활용할 수 있지만, yarn만큼 완전한 오프라인 설치 지원은 아닙니다.

  • yarn
    기본적으로 병렬 설치를 통해 속도가 빠릅니다.
    캐시된 패키지 정보를 이용해 오프라인 모드에서도 설치가 가능합니다(yarn install --offline).

Workspaces 지원

  • npm
    npm 7부터 Workspaces 기능을 제공하며, 모노레포(Monorepo) 설정을 위한 지원이 강화되었습니다.
    여러 패키지의 종속성을 한 번에 설치하거나 공통 종속성을 공유할 수 있습니다.

  • yarn
    Workspaces 기능을 오래전부터 제공하며, 모노레포 구조의 프로젝트를 쉽게 관리할 수 있습니다.
    여러 패키지의 종속성을 중앙에서 통합 관리할 수 있어, 모노레포에서 매우 유리합니다.

Workspaces는 하나의 프로젝트에서 여러 개의 패키지를 함께 관리할 수 있도록 도와주는 기능입니다. 주로 모노레포(Monorepo) 환경에서 사용됩니다. 모노레포는 여러 패키지를 하나의 코드베이스에 통합하여 관리하는 방식입니다.

정리

  • npm은 Node.js의 기본 패키지 매니저이므로, 설정 없이 바로 사용하고 싶거나, 최신 npm 기능을 활용하고 싶을 때 적합합니다.
  • yarn은 오프라인 설치, 더 빠른 설치 속도, 직관적인 명령어 사용 등에서 강점을 가지고 있어, 복잡한 프로젝트나 모노레포 환경에서 유리합니다.
profile
슬기로운개발생활🤖

0개의 댓글