Corepack
추가됨: v16.9.0, v14.19.0
*Corepack*은 패키지 관리자 버전 관리를 돕는 실험적인 도구입니다. 각 지원되는 패키지 관리자에 대한 바이너리 프록시를 제공하며, 호출 시 현재 프로젝트에 대해 구성된 패키지 관리자를 식별하고, 필요한 경우 다운로드한 후 실행합니다.
Corepack이 Node.js 기본 설치와 함께 배포되지만, Corepack에서 관리하는 패키지 관리자는 Node.js 배포판의 일부가 아니며:
- 첫 사용 시 Corepack은 네트워크에서 최신 버전을 다운로드합니다.
- 보안 취약성 관련 또는 기타 모든 필수 업데이트는 Node.js 프로젝트의 범위를 벗어납니다. 필요한 경우 최종 사용자는 자체적으로 업데이트 방법을 알아내야 합니다.
이 기능은 두 가지 핵심 워크플로를 간소화합니다.
- 시스템별 설치 프로세스를 더 이상 따라갈 필요 없이 원하는 패키지 관리자를 사용할 수 있으므로, 새로운 참여자의 온보딩이 용이해집니다.
- 업데이트가 필요할 때마다 수동으로 동기화할 필요 없이 팀의 모든 구성원이 의도한 패키지 관리자 버전을 정확하게 사용하도록 할 수 있습니다.
워크플로
기능 활성화
실험적인 상태이기 때문에 Corepack은 현재 명시적으로 활성화해야 효과가 있습니다. 이를 위해 corepack enable
을 실행하면 node
바이너리 옆에 환경에 심볼릭 링크가 설정됩니다 (필요한 경우 기존 심볼릭 링크를 덮어씁니다).
이 시점부터 지원되는 바이너리에 대한 모든 호출은 추가 설정 없이 작동합니다. 문제가 발생하면 corepack disable
을 실행하여 시스템에서 프록시를 제거하고 (Corepack 저장소에 문제를 제기하여 알려주시기 바랍니다).
패키지 구성
Corepack 프록시는 현재 디렉토리 계층 구조에서 가장 가까운 package.json
파일을 찾아 해당 "packageManager"
속성을 추출합니다.
값이 지원되는 패키지 관리자에 해당하는 경우, Corepack은 관련 바이너리에 대한 모든 호출이 요청된 버전에 대해 실행되도록 하고, 필요한 경우 주문형으로 다운로드하며, 성공적으로 검색할 수 없는 경우 중단합니다.
corepack use
를 사용하여 원하는 패키지 관리자를 사용하도록 로컬 package.json
을 업데이트하도록 Corepack에 요청할 수 있습니다.
corepack use # package.json에 최신 7.x 버전 설정
corepack use yarn@* # package.json에 최신 버전 설정
전역 버전 업그레이드
기존 프로젝트 외부에서 실행하는 경우(예: yarn init
실행 시), Corepack은 기본적으로 각 도구의 최신 안정 버전에 대략적으로 해당하는 미리 정의된 버전을 사용합니다. 이러한 버전은 corepack install
명령어와 함께 설정하려는 패키지 관리자 버전을 사용하여 재정의할 수 있습니다.
corepack install --global
또는 태그 또는 범위를 사용할 수 있습니다.
corepack install --global pnpm@*
corepack install --global yarn@stable
오프라인 작업 흐름
많은 프로덕션 환경은 네트워크에 액세스할 수 없습니다. Corepack은 일반적으로 패키지 관리자 릴리스를 해당 레지스트리에서 직접 다운로드하므로 이러한 환경과 충돌할 수 있습니다. 이러한 문제를 방지하려면 네트워크에 액세스할 수 있는 동안 corepack pack
명령어를 호출합니다(일반적으로 배포 이미지를 준비하는 동시에). 이렇게 하면 네트워크에 액세스할 수 없어도 필요한 패키지 관리자를 사용할 수 있습니다.
pack
명령어에는 다양한 플래그가 있습니다. 자세한 내용은 자세한 Corepack 설명서를 참조하십시오.
지원되는 패키지 매니저
다음 바이너리는 Corepack을 통해 제공됩니다.
패키지 매니저 | 바이너리 이름 |
---|---|
Yarn | yarn , yarnpkg |
pnpm | pnpm , pnpx |
자주 묻는 질문
Corepack은 npm과 어떻게 상호 작용합니까?
Corepack은 다른 패키지 매니저와 마찬가지로 npm을 지원할 수 있지만, 기본적으로는 쉬밍이 활성화되어 있지 않습니다. 이는 몇 가지 결과를 초래합니다.
- Corepack이 가로챌 수 없으므로 다른 패키지 매니저와 함께 사용하도록 구성된 프로젝트 내에서
npm
명령을 항상 실행할 수 있습니다. "packageManager"
속성에서npm
은 유효한 옵션이지만, 쉬밍이 없으면 전역 npm이 사용됩니다.
npm install -g yarn
이 작동하지 않습니다
npm은 전역 설치 시 Corepack 바이너리를 실수로 덮어쓰는 것을 방지합니다. 이 문제를 방지하려면 다음 옵션 중 하나를 고려하십시오.
- 이 명령을 실행하지 마십시오. Corepack은 어쨌든 패키지 매니저 바이너리를 제공하고 요청된 버전을 항상 사용할 수 있도록 하므로 패키지 매니저를 명시적으로 설치할 필요가 없습니다.
npm install
에--force
플래그를 추가하십시오. 이렇게 하면 npm에 바이너리를 덮어써도 된다고 알려주지만, 그 과정에서 Corepack 바이너리를 지우게 됩니다. (corepack enable
을 실행하여 다시 추가하십시오.)