Corepack

공명·2025년 1월 9일
post-thumbnail

Corepack 은 런타임 종속성이 없는 Node.js 스크립트로 Node.js 프로젝트와 패키지 매니져간 브릿지 역할을 합니다.
이를 통해 repo 별 패키지 매니져를 고정하고 사용할 수 있습니다. (패키지 매니져를 global 로 설치하는 기존 방식과 상반됨)

마치 nvm 이 node version 을 자유롭게 스위칭해주는 것 같다고 생각하면 됩니다~!

장점

  • 패키지 매니저 버전을 프로젝트에 명시적으로 고정하여 팀원들과 동일한 매니져와 버전을 사용하도록 보장합니다.
    - 패키지 매니져와 버전은 package.jsonpackageManager 필드에 기록됩니다.
  • 프로젝트 마다 다양한 패키지 매니져와 버전을 사용할 수 있습니다. (전역 설치시 버전 충돌 문제 해소)
  • CI/CD 환경에서 글로벌로 패키지 매니저를 설치할 필요가 없습니다.

설치

활성화 하기

Corepack은 Node.js 16.9.0부터 기본적으로 포함되어 있으나, 기본 비활성화 상태입니다.
아래 명령어로 활성화합니다.

corepack enable

cf. corepack 커맨드를 어떻게 바로 쓸 수 있는거지? npm ls -g 를 해보면 corepack 이 전역으로 인스톨되어있습니다.

특정 패키지 매니져 버전 다운로드

corepack prepare yarn@1.22.0
  • 지정한 버전의 패키지 매니저를 다운로드하여 로컬 또는 글로벌 환경에 준비.
  • --activate 옵션 사용시 글로벌 활성화
  • nvm install 과 비슷합니다.

레포에서 사용하기

corepack use yarn@stable
  • 지정한 패키지 매니저 버전을 프로젝트 수준에서 사용하도록 설정.
  • 해당 버전이 없을 땐 자동으로 설치까지 해줍니다.
  • package.jsonpackageManager 필드와 연동됩니다.
    - packageManager 필드가 없다면 corepack use 로 선택한 버전 + 바이너리 해쉬값으로 업데이트 됩니다.
    e.g. "packageManager": "yarn@3.6.1+sha256.abcdef1234567890"
    - packageManager 필드가 있다면
    - corepack use 시 해당 버전이 설치됩니다.
    - yarn 등 패키지매니져 명령어 실행시 자동으로 해당 버전을 잡아줍니다.
  • nvm use 와 비슷합니다.

References

profile
더 나은 추상화로 더 아름답게

0개의 댓글