💎 NPM (Node Package Manager)
개념 : NPM은 Node.js의 기본 패키지 매니저로, Node.js 애플리케이션 개발에 필요한 패키지를 관리하는 도구입니다.
특징
- 기본 제공: Node.js 설치 시 기본으로 제공됩니다.
- 레지스트리: 공식 npm 레지스트리에서 수많은 패키지를 이용할 수 있습니다.
- 스크립트: package.json 파일 내에서 스크립트를 정의하여 반복 작업을 자동화할 수 있습니다.
- 커스터마이징: .npmrc 파일을 통해 설정을 커스터마이징할 수 있습니다.
💎 Yarn (Yet Another Resource Negotiator)
개념: Yarn은 Facebook에서 개발한 JavaScript 패키지 매니저로, NPM의 단점을 보완하기 위해 만들어졌습니다.
특징
- 속도: 병렬 처리로 인해 패키지 설치 속도가 빠릅니다.
- 결정적 설치: yarn.lock 파일을 통해 동일한 환경에서 동일한 의존성을 설치합니다.
- 오프라인 모드: 한번 설치된 패키지는 캐시를 이용해 오프라인에서도 재설치할 수 있습니다.
- 보안: 설치 시 체크섬을 검증하여 패키지의 무결성을 확인합니다.
⚡공통점 및 기능
0. 의존성 관리
- 두 도구 모두 package.json 파일을 사용하여 프로젝트의 의존성을 관리합니다.
NPM과 Yarn은 모두 JavaScript 프로젝트에 필요한 의존성(dependency)을 관리하기 위해 사용됩니다.
이들 도구는 패키지 설치, 업데이트, 제거와 같은 작업을 통해 프로젝트의 의존성을 효율적으로 관리할 수 있게 도와줍니다.
1. 프로젝트 초기화 및 관리
- NPM: npm init 명령어를 통해 새 프로젝트를 초기화하고 package.json 파일을 생성할 수 있습니다. 이 파일은 프로젝트의 메타데이터를 포함하고 의존성을 관리합니다.
- Yarn: yarn init 명령어를 통해 동일한 작업을 수행할 수 있습니다.
2. 스크립트 실행 :
- NPM: package.json 파일 내의 scripts 섹션에 정의된 스크립트를 실행할 수 있습니다. 예를 들어, npm run build는 빌드 스크립트를 실행합니다.
- Yarn: yarn도 동일한 기능을 제공하며, yarn build와 같이 scripts 섹션에 정의된 스크립트를 실행할 수 있습니다.
- NPM과 Yarn 모두 package.json 내 스크립트를 정의하여 다양한 작업을 자동화할 수 있습니다.
3. 버전 관리
- NPM: npm version 명령어를 통해 프로젝트의 버전을 관리할 수 있습니다. 예를 들어, npm version patch는 패치 버전을 증가시킵니다.
- Yarn: yarn version 명령어도 동일한 기능을 제공하여 버전 관리를 지원합니다.
4. 패키지 퍼블리싱 및 배포
- NPM: npm publish 명령어를 사용하여 패키지를 NPM 레지스트리에 퍼블리시할 수 있습니다.
- Yarn: yarn publish 명령어를 통해 패키지를 퍼블리시할 수 있습니다.
5. 패키지 관리
- NPM: npm ls 명령어로 현재 설치된 패키지 트리를 확인할 수 있으며, npm outdated 명령어로 업데이트 가능한 패키지를 확인할 수 있습니다.
- Yarn: yarn list 명령어로 설치된 패키지를 확인할 수 있으며, yarn outdated 명령어로 업데이트 가능한 패키지를 확인할 수 있습니다.
6. 모노레포 지원
- NPM: 기본적으로 모노레포 지원을 제공하지 않지만, lerna와 같은 도구를 사용하여 모노레포를 관리할 수 있습니다.
- Yarn: Yarn의 워크스페이스 기능을 사용하여 모노레포를 효율적으로 관리할 수 있습니다.
7. 캐시 관리
- NPM: NPM은 기본적으로 패키지를 캐시하지만, 명시적으로 관리하는 기능은 제한적입니다.
- Yarn: Yarn은 더 강력한 캐시 관리 기능을 제공하여 설치된 패키지를 오프라인에서도 사용할 수 있게 합니다.
⚡차이점
항목 | npm | yarn |
패키지 설치 | npm install <package_name> | yarn add <package_name> |
패키지 제거 | npm uninstall <package_name> | yarn remove <package_name> |
패키지 업데이트 | npm update <package_name> | yarn upgrade <package_name> |
프로젝트 초기화 | npm init <package_name> | yarn init <package_name> |
의존성 관리 | package.json 파일을 통해 프로젝트의 의존성을 관리 | yarn.lock 파일을 통해 프로젝트의 의존성을 고정 |
모든 의존성 설치 | npm install | yarn install |
개발 의존성 설치 | npm install <package_name> --save-dev 또는 npm i <package_name> -D | yarn add <package_name> --dev 또는 yarn add <package_name> -D |
글로벌 패키지 설치 | npm install -g <package_name> | yarn global add <package_name> |
의존성 고정 | npm shrinkwrap 또는 package-lock.json 파일 사용 | yarn.lock 파일 사용 |
오프라인 모드 | 기본적으로 오프라인 모드 없음 | 오프라인 모드 지원 |
설치 속도 | 단일 스레드로 처리 | 병렬 처리로 더 빠 |
보안 | 일부 보안 기능 제공 | 체크섬 검증을 통한 강화된 보안 |
스크립트 정의 | package.json 파일에서 정의 | package.json 파일에서 정의 |
기본 제공 | Node.js 설치 시 기본 제공 | 별도 설치 필요 |
레지스트리 | 공식 npm 레지스트리 사용 | 공식 npm 레지스트리 사용 |
커스터마이징 | .npmrc 파일 사용 | .yarnrc 파일 사용 |
설치 속도 | 단일 스레드로 처리 | 병렬 처리로 더 빠름 |
결정적 설치 | package-lock.json 파일 사용 | yarn.lock 파일 사용 |
오프라인 모드 | 기본적으로 오프라인 모드 없음 | 오프라인 모드 지원 |
보안 | 일부 보안 기능 제공 | 체크섬 검증을 통한 강화된 보안 |
명령어 | npm install, npm uninstall 등 | yarn add, yarn remove 등 |
커스터마이징 | .npmrc 파일 사용 | .yarnrc 파일 사용 |
⚡결론
NPM과 Yarn 모두 JavaScript 생태계에서 널리 사용되는 패키지 매니저로서 각각의 장단점을 가지고 있습니다.
NPM은 Node.js의 기본 패키지 매니저로 널리 사용되고 있으며, Yarn은 더 빠른 설치 속도와 결정적 설치, 오프라인 모드 지원 등의 기능으로 주목받고 있습니다.
프로젝트의 요구 사항과 개발 환경에 따라 적절한 도구를 선택하여 사용할 수 있습니다.
'IT개념' 카테고리의 다른 글
[IT개념] 데이터 사일로(Data Silo) (0) | 2024.06.30 |
---|---|
[IT개념] 레거시(Legacy) 시스템 (0) | 2024.06.27 |
[IT개념] 온프레미스(On-Premises)와 클라우드(Cloud) (0) | 2024.06.20 |
[IT개념] 모듈(Module) (0) | 2024.06.20 |
[IT개념] 클라우드 서비스 모델 - SaaS / IaaS / PaaS (0) | 2024.06.19 |