Study/basic

[Basic] Frontend의 이해 - Package Managers

오후 6시의 봄 2023. 5. 18. 23:32

1. Package Manager

  • 소프트웨어 개발에서 패키지를 관리하고 설치, 업데이트, 제거하는 도구
  • 다른 소프트웨어 컴포넌트나 라이브러리, 프레임워크 등의 모듈화된 단위로 사용
  • NuGet
    - .NET 개발 환경에서 사용되는 패키지 관리자
    - C#, Visual Basic, F# 등의 .NET 언어로 작성된 소프트웨어 컴포넌트를 공유하고 재사용할 수 있게 해줌
  • npm
    - JavaScript 개발자들이 주로 사용하는 패키지 관리자
    - Node.js 환경에서 JavaScript 모듈을 관리하고 다운로드하여 사용할 수 있도록 해줌
  • pip
    - Python 패키지 관리자
  • Composer
    - PHP 개발자들이 사용하는 패키지 관리자

2. npm

  • JavaScript 생태계에서 가장 인기 있는 패키지 관리자
  • 다른 개발자들이 만든 JavaScript 모듈, 재사용 가능한 코드, 라이브러리, 프레임워크 등을 설치할 수 있음
  • package.json 파일에 의존하는 패키지 목록을 작성하고, npm install 명령어를 실행하면 의존성 패키지 자동 설치
  • 패키지의 다양한 버전을 관리
  • package.json 파일에 스크립트를 정의하여 프로젝트 빌드, 실행, 테스트 등을 자동화
  • 개발자들이 작성한 패키지를 다른 사람과 공유할 수 있도록 배포하는 기능을 제공
  • 방대한 JavaScript 패키지 생태계의 공개 패키지를 활용하여 개발 생산성을 높임

3. yarn

  • Facebook이 개발한 yarn은 npm의 대안으로 나왔으며, 속도와 보안 측면에서 일부 개선된 기능을 제공
  • npm 레지스트리에서 호스팅되는 대부분의 패키지를 지원
  • yarn.lock 파일을 사용하여 패키지의 정확한 버전을 잠금화하여 패키지 버전의 일관성을 유지할 수 있도록 도와줌
    (npm도 package-lock.json 파일을 사용하여 비슷한 기능을 제공)
  • 병렬 설치와 캐시 기능 등을 통해 패키지 설치 속도를 향상시킴
  • 패키지 설치 과정에서 보안 검사를 수행하여 악성 코드나 취약점이 있는 패키지를 탐지
    (npm 5 이후 버전에서는 병렬설치, 보안검사 등 가능)

4. pnpm

  • JavaScript 및 TypeScript 프로젝트의 패키지 의존성 관리 도구
  • npm 및 yarn은 패키지를 설치할 때 각 패키지를 별도의 디렉토리에 설치하고, 중복되는 패키지를 여러 번 저장
    -> 디스크 공간과 시간을 낭비
  • pnpm은 공유 패키지 저장소를 사용하여 프로젝트의 모든 패키지를 단일 위치에 설치
    -> 여러 프로젝트 간에 패키지를 공유할 수 있고, 중복 설치를 피함
  • pnpm은 npm 및 yarn과 호환되는 패키지 매니페스트 파일(package.json)을 사용
  • pnpm은 npm 및 yarn의 대안으로 사용되며, 특히 멀티 패키지 프로젝트 및 공유 패키지 저장소를 관리해야 할 때 유용