Corepack は、実行時依存性のない Node.js スクリプトであり、Node.js プロジェクトと、開発中に使用されるパッケージ マネージャーとの間のブリッジとして機能します。実際には、 Corepack を使用すると、Yarn、npm、および pnpm をインストールせずに使用できます。
Corepack は、デフォルトで、最新のすべての Node.js バージョンとともに配布されます。 corepack enable
実行して、必要な Yarn バイナリと pnpm バイナリをパスにインストールします。
まず、グローバル Yarn バイナリと pnpm バイナリをアンインストールします (npm はそのままにしておきます)。通常、これを行うには、次のコマンドを実行します。
npm uninstall -gyarn pnpm# これで十分ですが、npm を経由せずに Yarn をインストールした場合は、# もっと面倒になる可能性があります。たとえば、`brew uninstallyarn` も実行する必要があるかもしれません。
次に、Corepack をインストールします。
npm install -g corepack
私たちは、npm を使用して Corepack をインストールすることの皮肉とオーバーヘッドを認めています。これが、Node.js 自体とともに配布される Corepack バージョンを使用することが推奨される理由の少なくとも一部です。
CONTRIBUTING.md
参照してください。
いつものようにパッケージマネージャーを使用してください。 Yarn プロジェクトではyarn install
、pnpm プロジェクトではpnpm install
、npm プロジェクトではnpm
実行します。 Corepack はこれらの呼び出しをキャッチし、状況に応じて次のようにします。
ローカル プロジェクトが使用しているパッケージ マネージャー用に構成されている場合、Corepack は互換性のある最新バージョンをダウンロードしてキャッシュします。
ローカル プロジェクトが別のパッケージ マネージャー用に構成されている場合、Corepack は適切なパッケージ マネージャーを使用してコマンドを再度実行するように要求します。これにより、インストール アーティファクトの破損が回避されます。
ローカル プロジェクトがどのパッケージ マネージャー用にも構成されていない場合、Corepack はユーザーが何をしているかを知っていると想定し、「既知の良好なリリース」として固定されているパッケージ マネージャーのバージョンを使用します。詳細については、関連するセクションを確認してください。
package.json
のpackageManager
フィールドを使用してパッケージのマネージャーを設定します。
{ "パッケージマネージャー": "[email protected]+sha224.953c8233f7a92884eee2de69a1b92d1f2ec1655e66d08071ba9a02fa"}
ここで、 yarn
、バージョン3.2.3
で指定されたパッケージ マネージャーの名前と、検証用のこのバージョンの SHA-224 ハッシュです。 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
) にバイナリをエイリアスとして追加することです。
エイリアス ヤーン="コアパック ヤーン"エイリアス ヤーンpkg="コアパック ヤーンpkg"エイリアス pnpm="コアパック pnpm"エイリアス pnpx="コアパック pnpx"エイリアス npm="コアパック npm"エイリアス npx="コアパック npx"
Windows PowerShell では、 $PROFILE
自動変数を使用して関数を追加できます。
echo "関数糸 { corepackyarn `$args }" >> $PROFILEecho "関数糸pkg { コアパック糸pkg `$args }" >> $PROFILEecho "関数 pnpm { コアパック pnpm `$args }" >> $PROFILEecho "関数 pnpx { corepack pnpx `$args }" >> $PROFILEecho "function npm { corepack npm `$args }" >> $PROFILEecho "function 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
に設定すると、ローカル パッケージにpackageManager
フィールドがリストされていないことが Corepack によって検出された場合に、そのフィールドが更新されないようにすることができます。一般に、プロジェクトのインストールが常に決定的であることが保証されるため、常に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_ENABLE_STRICT
を0
に設定すると、パッケージ マネージャーが現在のプロジェクトに定義されたものに対応しない場合に Corepack がエラーをスローするのを防ぐことができます。これは、ユーザーが現在のプロジェクトで指定されたパッケージ マネージャーを使用している場合、プロジェクトのpackageManager
フィールドで指定されたバージョンを使用することを意味します。ただし、ユーザーが現在のプロジェクトに指定されているものとは異なる他のパッケージ マネージャーを使用している場合は、システム全体のパッケージ マネージャーのバージョンが使用されます。
COREPACK_ENABLE_PROJECT_SPEC
を0
に設定すると、パッケージ マネージャーが現在のプロジェクトに定義されたものに対応するかどうかを Corepack がチェックしなくなります。これは、プロジェクトのpackageManager
フィールドに何が指定されているかに関係なく、常にシステム全体のパッケージ マネージャーを使用することを意味します。
COREPACK_HOME
設定して、Corepack がパッケージ マネージャーをインストールする場所を定義できます。デフォルトでは、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 タイプのレジストリに接続するときにベアラー トークン認証ヘッダーを設定します。
COREPACK_NPM_USERNAME
およびCOREPACK_NPM_PASSWORD
使用して、npm タイプのレジストリに接続するときに Basic 認証ヘッダーを設定します。どちらの環境変数もプレーン テキストとして必須であることに注意してください。空のパスワードを送信する場合は、明示的に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
参照してください。