Npm
- package.json을 사용하여 프로젝트 의존성 및 구성을 관리한다.
- 프로젝트에 필요한 외부 라이브러리나 도구들을 손쉽게 추가하고 관리할 수 있다.
- 패키지들 간의 의존성을 자동으로 해결해 준다.
- 스크립트를 정의하여 빌드, 테스트, 시작등 작업을 간편하게 실행할 수 있다.
- 한 번에 하나씩 순차적으로 설치한다. (npm5부터는 병렬설치로 개선)
- lock파일의 도입으로 정확한 의존성 해결과 패키지 설치를 보장한다.
- 모든 환경에서 동일한 패키지 버전이 사용되어 일관된 동작이 가능해진다.
- 이전에 설치된 패키지를 캐싱하여 더 빠른 재설치가 가능하다.
- 패키지 버전을 명시적으로 기록하여 예상치 못한 업그레이드 방지하여 프로젝트의 안정성과, 보안 측면이 좋다.
- 워크스페이스 기능을 도입되었다. (npm7버전 부터 제공)
Yarn
- package.json 외에도 yarn.lock 파일을 사용하여 프로젝트 의존성 및 구성을 관리한다.
- 여러 패키지를 동시에 가져와서 설치하도록 최적화되어 있다.
- 워크스페이스 기능을 도입되었다.
- 기본적으로 명시적인 의존 관계를 나태내야 사용이 가능하다.
- node_mouels에 패키지를 저장하는 방식이 아니라 패키지를 압축하여 한 개의. yarn/cache 폴더에 수평적으로 저장한다.
- 수평적으로 존재하기 때문에 빠르게 찾을 수 있다.
- 압축 파일을 설치하여 설치가 빠르다.
- 팬텀 디펜던시가 발생하지 않는다.
Pnpm
- 의존성을 효율적으로 관리하는데 초점을 맞춘 패키지 관리자이다
- 워크스페이스 기능을 제공한다.
- 패키지 의존성을 하나의 디렉터리에 설치하여 엄격한 의존 관리가 가능
- 시스템 내에 단일 패키지 스토어에 모든 의존성을 보관하여 디스크 공간이 절약하고, 하드 네비게이션 과정을 통하여 설치 속도가 빠르다.
- 소프트 네비게이션을 사용하여 프로젝트의 직접적인 의존성만 모듈 디렉토리의 루트에 추가한다.
워크스페이스 기능이란?
- 하드 네비게이션과, 소프트 네비게이션을 통하여 디스크 공간을 절약한다
- 하드 네비게이션
- 여러 프로젝트 간에 공통 의존성을 하드 네비게이션으로 생성하여 사용
- 파일의 사본 역할을 하여 원본 파일이 삭제되더라도 하드 네비게이션에 데이터가 포함되어 있어서 데이터에 엑세스 가 가능하다.
- 소프트 네비게이션
- 하나의 프로젝트가 여러 프로젝트에 공유될 때 심볼릭 링크를 사용
- 소프트 링크는 파일 이름에 대한 포인터를 참조하는 역할을 하여 원본 파일이 삭제되거나 이동할 경우 동작하지 않는다.
- 심볼릭 링크 : https://en.wikipedia.org/wiki/Symbolic_link
- 하드 네비게이션
- 모든 프로젝트의 의존성 버전을 통합적으로 관리한다.
- 단일 코드베이스에서 모든 프로젝트를 함께 빌드하고 테스트할 수 있다.
'MSA' 카테고리의 다른 글
[MFA] 트랜스파일러(Transpiler), 번들러(Bundler) 특징 (Babel, SWC, webpack, Vite) (0) | 2023.12.25 |
---|---|
[MFA] NX 특징 , NX Cache Example (2) | 2023.11.26 |
[MFA] 모노레포(Mono Repo)란? 장단점 (2) | 2023.10.28 |
[MFA] 마이크로 프론트엔드 아키텍처 특징 장,단점 (0) | 2023.10.22 |
[MSA] Prometheus, Grafana 란? Grafana연동Example (1) | 2023.05.16 |