React.js

[React.js]npm과 yarn 의 차이점 yarn을 쓰는 이유

Home-M 2024. 9. 9. 08:24
728x90
반응형

 

제가 현장에서 쓰고 있는 환경은 yarn만 사용하고 있는데요

npm과의 차이는 무엇인지 정리해 보았습니다.

npm과 yarn은 모두 자바스크립트 패키지 관리 도구로, 프로젝트의 의존성(패키지)을 관리하는 데 사용됩니다. 하

지만 두 도구는 몇 가지 중요한 차이점과 장점을 가지고 있습니다.

npm과 yarn의 주요 차이점과 yarn을 사용하는 이유

npm (Node Package Manager)

  • 역사: npm은 Node.js와 함께 출시되었으며, 가장 널리 사용되는 패키지 관리 도구입니다.
  • 기본 기능: 패키지 설치, 업데이트, 삭제, 스크립트 실행 등 기본적인 패키지 관리 기능을 제공합니다.
  • 의존성 관리: package.json 파일을 사용해 의존성을 정의하고, package-lock.json 파일을 통해 설치된 패키지의 정확한 버전을 기록합니다.
  • 속도: 초기에는 설치 속도가 상대적으로 느렸지만, 최근 버전에서는 속도 개선이 이루어졌습니다.
  • 캐싱: npm은 패키지를 로컬 캐시에 저장하지만, 캐시 관리는 yarn에 비해 약간 불완전할 수 있습니다.

Yarn

  • 역사: Yarn은 Facebook이 개발하였으며, npm의 속도와 안정성 문제를 해결하기 위해 만들어졌습니다.
  • 기본 기능: 패키지 설치, 업데이트, 삭제, 스크립트 실행 등의 기본 기능을 제공하며, npm과 호환됩니다.
  • 의존성 관리: package.json과 함께 yarn.lock 파일을 사용하여 설치된 패키지의 버전을 정확히 기록합니다. yarn.lock 파일은 의존성의 정확한 버전을 보장하는 데 도움을 줍니다.
  • 속도: 캐시와 병렬 설치 덕분에 패키지 설치 속도가 빠릅니다.
  • 캐싱: Yarn은 패키지를 로컬 캐시에 저장하고, 캐시를 적극적으로 활용하여 재사용합니다. 이는 설치 속도를 크게 향상시킵니다.
  • 오프라인 모드: Yarn은 오프라인 모드를 지원하여, 한 번 설치한 패키지를 인터넷 없이도 재설치할 수 있습니다.
  • 버전 관리: yarn은 의존성의 정확한 버전을 보장하는 yarn.lock 파일을 생성하여, 팀원 간의 일관된 환경을 유지하는 데 도움을 줍니다.
  • 워크스페이스: Yarn은 여러 패키지를 동시에 관리할 수 있는 워크스페이스 기능을 제공하여, 모노레포(Monorepo) 구조를 지원합니다.

yarn을 사용하는 이유

  1. 속도: Yarn은 병렬 설치와 강력한 캐시 시스템 덕분에 패키지 설치 속도가 빠릅니다. 이는 대규모 프로젝트에서 유리합니다.
  2. 일관성: yarn.lock 파일을 사용하여, 개발 팀원들이 동일한 버전의 패키지를 설치하도록 보장할 수 있습니다. 이는 의존성 버전 충돌 문제를 줄이는 데 도움을 줍니다.
  3. 오프라인 설치: Yarn은 오프라인 모드를 지원하여, 이전에 설치한 패키지를 인터넷 없이도 설치할 수 있습니다. 이는 네트워크 문제로 인한 장애를 방지할 수 있습니다.
  4. 워크스페이스 지원: Yarn의 워크스페이스 기능을 사용하면, 모노레포 구조를 쉽게 관리할 수 있어, 여러 패키지를 동시에 개발하고 관리할 때 유리합니다.
  5. 강력한 캐싱: Yarn의 캐시 시스템은 패키지를 로컬에 저장하고, 재사용을 통해 설치 시간을 단축시킵니다.

이러한 이유로 yarn은 많은 개발자들이 선호하는 패키지 관리 도구가 되었으며, 특히 대규모 프로젝트나 모노레포 환경에서 유리합니다. npm도 지속적으로 개선되고 있으며, 최신 버전에서는 많은 성능 개선과 새로운 기능들이 추가되었습니다. 두 도구 중 어떤 것을 선택할지는 프로젝트의 필요와 팀의 선호에 따라 결정하면 됩니다.

같은 소스를 갖고 수정을 하다보면 package.json파일을 수정하는 경우가 생기는데요

이 때 단순히 커밋만 할 경우 다른 분들의 환경에서는 에러가 날 수 있습니다.

package.json을 수정한 후 동료에게 yarn install을 터미널에서 한 번 해달라고 요청하면 됩니다.

모두에게 동일한 버전의 패키지가 업데이트 됩니다.

yarn install은 Node.js 프로젝트에서 사용하는 패키지 관리 도구인 Yarn이 패키지를 설치하는 명령어입니다. 이 명령어는 프로젝트의 의존성(dependencies)을 package.json 파일에 정의된 대로 다운로드하고, 이를 node_modules 디렉터리에 설치합니다. 이 과정에서 여러 가지 작업이 수행됩니다:

  1. package.json 파일을 분석: package.json 파일에 명시된 의존성 목록을 읽어들입니다.
  2. 의존성 설치: package.json 파일에 나열된 패키지들과 그에 따른 하위 의존성들을 모두 설치합니다.
  3. yarn.lock 파일 관리: yarn.lock 파일이 없다면 생성하고, 의존성 버전을 고정하여 프로젝트에서 동일한 버전의 패키지를 사용할 수 있도록 보장합니다. 이미 yarn.lock 파일이 있다면 그 내용을 바탕으로 의존성을 설치합니다.
  4. 중복 제거 및 캐싱: Yarn은 중복된 패키지를 제거하고, 이미 다운로드된 패키지를 캐싱하여 이후 설치 속도를 빠르게 합니다.

이 명령어는 프로젝트의 종속성을 최신 상태로 유지하고, 필요한 패키지를 설치하는 데 사용됩니다.

728x90