Corepack은 Node.js 프로젝트와 개발 중에 사용할 패키지 관리자 사이의 브리지 역할을 하는 런타임 종속성이 없는 Node.js 스크립트입니다. 실제로 Corepack을 사용하면 Yarn, npm 및 pnpm을 설치하지 않고도 사용할 수 있습니다 .
Corepack은 기본적으로 모든 최신 Node.js 버전과 함께 배포됩니다. corepack enable
실행하여 경로에 필요한 Yarn 및 pnpm 바이너리를 설치하세요.
먼저 전역 Yarn 및 pnpm 바이너리를 제거합니다(npm을 그대로 유지). 일반적으로 다음 명령을 실행하여 이 작업을 수행합니다.
npm uninstall -g Yarn pnpm# 이것으로 충분하지만, npm을 거치지 않고 Yarn을 설치했다면# 더 지루할 수 있습니다. 예를 들어 `brew uninstall Yan`도 실행해야 할 수도 있습니다.
그런 다음 Corepack을 설치합니다.
npm install -g 코어팩
우리는 npm을 사용하여 Corepack을 설치하는 데 따른 아이러니와 오버헤드를 인정합니다. 이는 Node.js 자체와 함께 배포되는 Corepack 버전을 사용하는 것이 선호되는 이유 중 적어도 일부입니다.
CONTRIBUTING.md
참조하세요.
평소처럼 패키지 관리자를 사용하세요. Yarn 프로젝트에서 yarn install
실행하고, pnpm 프로젝트에서 pnpm install
, npm 프로젝트에서 npm
실행합니다. Corepack은 상황에 따라 이러한 호출을 포착합니다.
사용 중인 패키지 관리자에 대해 로컬 프로젝트가 구성된 경우 Corepack은 최신 호환 버전을 다운로드하고 캐시합니다.
로컬 프로젝트가 다른 패키지 관리자에 대해 구성된 경우 Corepack은 올바른 패키지 관리자를 사용하여 명령을 다시 실행하도록 요청하여 설치 아티팩트의 손상을 방지합니다.
로컬 프로젝트가 패키지 관리자에 대해 구성되지 않은 경우 Corepack은 사용자가 수행 중인 작업을 알고 있다고 가정하고 "알려진 양호한 릴리스"로 고정된 패키지 관리자 버전을 사용합니다. 자세한 내용은 관련 섹션을 확인하세요.
package.json
의 packageManager
필드를 사용하여 패키지 관리자를 설정합니다.
{ "packageManager": "[email protected]+sha224.953c8233f7a92884eee2de69a1b92d1f2ec1655e66d08071ba9a02fa"}
여기서 yarn
유효성 검사를 위해 이 버전의 SHA-224 해시와 함께 버전 3.2.3
에 지정된 패키지 관리자의 이름입니다. packageManager@xyz
필요합니다. 해시는 선택 사항이지만 보안 관행으로 적극 권장됩니다. 패키지 관리자에 허용되는 값은 yarn
, npm
및 pnpm
입니다.
.js
파일(CommonJS 모듈로 해석됨) 또는 .tgz
파일(패키지로 해석되며 package.json
의 "bin"
필드를 사용하여)에 대한 URL을 제공할 수도 있습니다. 아카이브에서 사용할 파일을 결정합니다).
{ "packageManager": "yarn@https://registry.npmjs.org/@yarnpkg/cli-dist/-/cli-dist-3.2.3.tgz#sha224.16a0797d1710d1fb7ec40ab5c3801b68370a612a9b66ba117ad9924b"}
지원되는 패키지 관리자가 나열되지 않은 프로젝트 내에서 Corepack을 실행하면 기본적으로 알려진 양호한 릴리스 세트가 사용됩니다.
요청한 패키지 관리자에 대해 알려진 양호한 릴리스가 없는 경우 Corepack은 npm 레지스트리에서 사용 가능한 최신 버전을 조회하고 나중에 사용할 수 있도록 캐시합니다.
알려진 양호한 릴리스는 corepack install -g
사용하여 시스템 전체에서 업데이트할 수 있습니다. Corepack이 알려진 양호한 릴리스와 동일한 주요 라인에서 특정 패키지 관리자의 새 버전을 다운로드하면 기본적으로 자동 업데이트됩니다.
유틸리티 명령은 다음 섹션에서 자세히 설명합니다.
컨테이너 이미지를 빌드하는 동안 네트워크를 사용할 수 있습니다. 이 경우 간단히 corepack pack
실행하여 이미지에 지정된 패키지 관리자에 대한 마지막으로 알려진 양호한 릴리스가 포함되어 있는지 확인하면 됩니다.
또는 네트워크를 사용할 수 없는 시스템에 프로젝트를 게시하는 경우 컨테이너가 액세스할 수 있는 위치에 저장하기 전에 로컬 컴퓨터에서 패키지 관리자 아카이브를 선제적으로 생성합니다( corepack pack -o
사용). (예를 들어 저장소 내에서). 그 후에는 corepack install -g --cache-only
실행하여 캐시를 설정하기만 하면 됩니다.
corepack [@] [... args]
이 메타 명령은 로컬 폴더에서 지정된 패키지 관리자를 실행합니다. 이를 사용하여 특정 버전으로 설치를 강제로 실행할 수 있으며, 이는 회귀를 찾을 때 유용할 수 있습니다.
이러한 명령은 해당 패키지 관리자에 대해 로컬 프로젝트가 구성되었는지 여부를 계속 확인합니다(즉, packageManager
필드가 pnpm
참조하는 프로젝트에서는 corepack yarn install
실행할 수 없습니다).
corepack cache clean
로컬 COREPACK_HOME
캐시 디렉터리를 지웁니다.
corepack cache clear
로컬 COREPACK_HOME
캐시 디렉터리를 지웁니다.
corepack enable [... name]
옵션 | 설명 |
---|---|
--install-directory | 지정된 위치에 심을 추가합니다. |
이 명령은 Corepack이 설치된 위치를 감지하고 지정된 각 패키지 관리자(또는 매개변수 없이 명령을 호출하는 경우 모든 패키지 관리자)에 대해 그 옆에 shim을 생성합니다. npm은 현재 다른 수단을 통해 Node.js와 함께 배포되므로 명시적으로 요청하지 않는 한 npm shim은 설치되지 않습니다.
corepack
바이너리가 있는 파일 시스템이 읽기 전용인 경우 이 명령은 실패합니다. 해결 방법은 쉘 구성 파일(예: ~/.bash_aliases
)에 바이너리를 별칭으로 추가하는 것입니다.
별칭 원사="corepack 원사"alias 원사pkg="corepack 원사pkg"alias pnpm="corepack pnpm"alias pnpx="corepack pnpx"alias npm="corepack npm"alias npx="corepack npx"
Windows PowerShell에서는 $PROFILE
자동 변수를 사용하여 함수를 추가할 수 있습니다.
echo "함수 원사 { corepack 원사 `$args }" >> $PROFILEecho "함수 Yarnpkg { corepack Yarnpkg `$args }" >> $PROFILEecho "함수 pnpm { corepack pnpm `$args }" >> $PROFILEecho "함수 pnpx { corepack pnpx `$args }" >> $PROFILEecho "함수 npm { corepack npm `$args }" >> $PROFILEecho "함수 npx { corepack npx `$args }" >> $PROFILE
corepack disable [... name]
옵션 | 설명 |
---|---|
--install-directory | 지정된 위치의 심을 제거합니다. |
이 명령은 Node.js가 설치된 위치를 감지하고 거기에서 shim을 제거합니다.
corepack install
로컬 프로젝트에 구성된 패키지 관리자를 다운로드하여 설치합니다. 이 명령은 프로젝트 외부에서 패키지 관리자를 실행할 때 사용되는 글로벌 버전을 변경하지 않습니다(이 작업을 수행하려면 `-g,--global` 플래그를 사용하세요).
corepack install <-g,--global> [... name[@]]
선택한 패키지 관리자를 설치하고 시스템에 설치합니다.
이렇게 설치된 패키지 관리자는 packageManager
필드를 정의하는 프로젝트 외부에서 해당 바이너리를 호출할 때 새로운 기본값으로 구성됩니다.
corepack pack [... name[@]]
옵션 | 설명 |
---|---|
--json | 로그 대신 출력 폴더 인쇄 |
-o,--output | 아카이브를 생성할 경로 |
선택한 패키지 관리자를 다운로드하고 corepack install -g
와 함께 사용하기에 적합한 tarball에 저장합니다.
corepack use ]>
실행 시 이 명령은 제공된 설명자와 일치하는 최신 릴리스를 검색하여 프로젝트의 package.json 파일에 할당하고 자동으로 설치를 수행합니다.
corepack up
로컬 프로젝트에 사용되는 패키지 관리자의 현재 주요 릴리스 라인에 대해 사용 가능한 최신 버전을 검색하고 이를 사용하도록 프로젝트를 업데이트합니다.
corepack use
달리 이 명령은 패키지 관리자 이름이나 버전 범위를 사용하지 않습니다. 항상 동일한 주요 라인에서 사용 가능한 최신 버전을 선택하기 때문입니다. 새로운 메이저로 업그레이드해야 하는 경우 명시적인 corepack use {name}@latest
호출을 사용하십시오(또는 간단히 corepack use {name}
).
COREPACK_DEFAULT_TO_LATEST
0
으로 설정하면 Corepack이 원격 레지스트리에서 선택한 패키지 관리자의 최신 버전을 조회하지 않고 동일한 주요 라인의 새 버전을 다운로드할 때 마지막으로 알려진 양호한 버전을 업데이트하지 않도록 지시할 수 있습니다.
COREPACK_ENABLE_AUTO_PIN
0
으로 설정하면 Corepack이 로컬 패키지에 목록이 없음을 감지한 경우 packageManager
필드가 업데이트되지 않도록 할 수 있습니다. 일반적으로 프로젝트 설치가 항상 결정적임을 보장하기 위해 항상 packageManager
필드( corepack use [name]@[version]
을 통해 쉽게 설정할 수 있음)를 나열하는 것이 좋습니다.
COREPACK_ENABLE_DOWNLOAD_PROMPT
0
으로 설정하여 Corepack이 소프트웨어를 다운로드해야 할 때 URL을 표시하지 않도록 하거나, 1
로 설정하여 URL을 표시할 수 있습니다. 기본적으로 Corepack이 명시적으로 호출되면(예: corepack pnpm …
) 0
으로 설정됩니다. Corepack이 암시적으로 호출되면(예: pnpm …
) 1
로 설정됩니다. 표준 입력이 TTY이고 CI 환경이 감지되지 않으면 Corepack은 다운로드를 시작하기 전에 사용자 입력을 요청합니다.
COREPACK_ENABLE_UNSAFE_CUSTOM_URLS
1
로 설정하면 사용자 정의 URL을 사용하여 Corepack에서 알려진 패키지 관리자( yarn
, npm
및 pnpm
)를 로드할 수 있습니다.
COREPACK_ENABLE_NETWORK
0
으로 설정하면 Corepack이 네트워크에 액세스하지 못하도록 할 수 있습니다(이 경우 corepack install -g --cache-only
사용하여 실행할 프로젝트에 필요한 패키지 관리자 버전을 하이드레이션해야 합니다). ).
패키지 관리자가 현재 프로젝트에 정의된 관리자와 일치하지 않는 경우 Corepack이 오류를 발생시키지 않도록 COREPACK_ENABLE_STRICT
0
으로 설정할 수 있습니다. 즉, 사용자가 현재 프로젝트에 지정된 패키지 관리자를 사용하는 경우 프로젝트의 packageManager
필드에 지정된 버전을 사용하게 됩니다. 그러나 사용자가 현재 프로젝트에 지정된 것과 다른 다른 패키지 관리자를 사용하는 경우 시스템 전체 패키지 관리자 버전이 사용됩니다.
COREPACK_ENABLE_PROJECT_SPEC
0
으로 설정하면 Corepack이 패키지 관리자가 현재 프로젝트에 정의된 관리자와 일치하는지 확인하지 못하도록 할 수 있습니다. 이는 프로젝트의 packageManager
필드에 지정된 내용에 관계없이 항상 시스템 전체 패키지 관리자를 사용한다는 의미입니다.
Corepack이 패키지 관리자를 설치해야 하는 위치를 정의하기 위해 COREPACK_HOME
설정할 수 있습니다. 기본적으로 Windows에서는 %LOCALAPPDATA%nodecorepack
으로 설정되고 다른 곳에서는 $HOME/.cache/node/corepack
으로 설정됩니다.
COREPACK_ROOT
Corepack 자체에 기능적 영향을 미치지 않습니다. Corepack이 기본 패키지 관리자로 쉘아웃할 때 환경에 자동으로 설정되므로 해당 기능의 존재를 감지할 수 있습니다( yarn init
와 같은 명령에 유용함).
COREPACK_NPM_REGISTRY
npm에서 패키지 관리자를 검색할 때 사용되는 레지스트리 기본 URL을 설정합니다. 기본값은 https://registry.npmjs.org
입니다.
COREPACK_NPM_TOKEN
npm 유형 레지스트리에 연결할 때 Bearer 토큰 인증 헤더를 설정합니다.
COREPACK_NPM_USERNAME
및 COREPACK_NPM_PASSWORD
npm 유형 레지스트리에 연결할 때 기본 인증 헤더를 설정합니다. 두 환경 변수 모두 필수이며 일반 텍스트입니다. 빈 비밀번호를 보내려면 명시적으로 COREPACK_NPM_PASSWORD
빈 문자열로 설정하세요.
HTTP_PROXY
, HTTPS_PROXY
및 NO_PROXY
node-proxy-agent
통해 지원됩니다.
COREPACK_INTEGRITY_KEYS
빈 문자열로 설정하거나 0
으로 설정하여 Corepack에 무결성 검사를 건너뛰도록 지시하거나 사용자 정의 키가 포함된 JSON 문자열로 설정할 수 있습니다.
corepack
명령을 실행하는 동안 발생할 수 있는 다양한 네트워킹 문제가 있습니다. 확인해야 할 사항:
네트워크 연결이 활성화되어 있는지 확인하세요.
귀하의 요청에 대한 호스트가 귀하의 DNS에 의해 확인될 수 있는지 확인하십시오. 쉘에서 curl [URL]
(ipv4) 및 curl -6 [URL]
(ipv6)을 사용해 보십시오.
프록시 설정을 확인하세요(환경 변수 참조).
CONTRIBUTING.md
참조하세요.
LICENSE.md
참조하세요.