패키지 매니저 비교(npm, yarn)

JACKJACK·2023년 8월 29일
1
post-thumbnail

패키지 매니저란?

소프트웨어 개발에서 사용되는 라이브러리, 프레임워크, 도구 들을 관리하고 설치, 업데이트, 제거하는 도구나 시스템을 말한다. 패키지 매니저의 주요 목적을 살펴보자.

  • 의존성 관리: 소프트웨어 프로젝트는 종종 다른 소프트웨어 컴포넌트에 의존하므로, 패키지 매니저는 이러한 의존성을 관리하고 필요한 패키지를 자동으로 설치하거나 업데이트하여 개발자의 작업을 단순화한다.

  • 설치 및 관리의 용이성: 패키지 매니저를 사용하면 명령어 한 줄로 소프트웨어 패키지를 설치하거나 업데이트할 수 있고, 패키지의 버전 관리와 업데이트도 쉽게 수행할 수 있다.

  • 패키지 검색 및 검증: 패키지 매니저는 다양한 패키지들을 검색하고 악성코드나 보안 취약성 검사를 진행해, 그들의 버전과 품질을 평가하여 안정성과 신뢰성을 보장한다.

  • 환경 일관성: 프로젝트의 다른 개발자나 서버 간에 소프트웨어 환경을 일관성 있게 유지할 수 있다. 모든 개발자가 동일한 버전의 패키지를 사용하므로 코드와 환경 간의 차이를 줄여준다.
    (package-lock.json & yarn.lock)


JS에서 주로 사용 되는 패키지 매니저 npm, yarn

npm은 Node.js에서 기본적으로 제공되는 패키지 매니저로 많은 커뮤니티와 생태계를 갖고있다. 사람들이 노드 패키지를 만들어서 업로드하면, 사용자들은 npm과 명령줄 인터페이스를 통해 패키지의 설치가 가능하게 되었다. npm v5 이전에는 의존성 해결에 문제가 있을 수 있지만 이후로는 pakage-lock.json이 도입되어 의존성 해결이 정확해졌다고 한다.

yarn은 npm의 단점을 보완하고 성능을 개선하는 것을 주요 목표로 출시되었다. npm의 의존성 해결 중 중복 다운로드와 일련의 요청이 발생해 속도가 저하되는 경우가 있어 yarn의 병렬 다운로드와 캐싱을 통해 의존성 문제와 패키지 설치를 빠르게 개선시켰다. 또 npm v4까지는 package.json파일로부터 여러번 설치를 수행하면 최신 버전이 설치되는 등 다른 버전의 의존성이 설치되는 문제가 있었는데, 이를 yarn.lock을 통해 이를 해결했다.

현재는 둘 다 의존성간의 의존이 없으면 여러 패키지를 병렬로 다운로드 받아 패키지 설치 속도가 빠르고, pakage-lock.json, yarn.lock을 통해 다른 환경에서도 일관된 개발 환경을 유지할 수 있어 의존성 충돌을 방지해주고 있다. npm이 자동으로 패키지에 포함된 다른 패키지 코드를 실행하는 면이 있어서 yarn이 보안면에서 더 훌륭하다는 점이 있었지만. 현재는 둘다 보안도 성능도 좋아져서 무엇을 사용해도 상관이 없다고 한다.

결론은 허무하지만.. 둘다 좋다..,ㅎㅎ

profile
러닝커브를 빠르게 높이자🎢

0개의 댓글