Skip to content

Corepack

追加: v16.9.0, v14.19.0

[安定版: 1 - 試験的]

安定版: 1 安定性: 1 - 試験的

Corepack は、パッケージマネージャーのバージョン管理を支援する実験的なツールです。 各サポートされているパッケージマネージャー用のバイナリプロキシを公開しており、呼び出されると、現在のプロジェクトに設定されているパッケージマネージャーを識別し、必要に応じてダウンロードして、最後に実行します。

CorepackはNode.jsのデフォルトインストールで配布されていますが、Corepackが管理するパッケージマネージャーはNode.jsの配布物の一部ではありません。

  • 最初の使用時に、Corepackはネットワークから最新バージョンをダウンロードします。
  • (セキュリティ脆弱性などに関連する)必要な更新は、Node.jsプロジェクトの範囲外です。必要に応じて、エンドユーザーは自身で更新方法を見つける必要があります。

この機能は、2つの中核的なワークフローを簡素化します。

  • 新規コントリビューターのオンボーディングが容易になります。システム固有のインストールプロセスに従う必要がなくなり、必要なパッケージマネージャーを入手できます。
  • チームの全員が、更新が必要になるたびに手動で同期する必要なく、意図したとおりにパッケージマネージャーのバージョンを正確に使用できるようになります。

ワークフロー

機能を有効にする

実験的なステータスであるため、Corepackを有効にするには、明示的に有効にする必要があります。 そのためには、corepack enableを実行して、環境内のnodeバイナリの隣にシンボリックリンクを設定します(必要に応じて既存のシンボリックリンクを上書きします)。

この時点から、サポートされているバイナリへの呼び出しは、追加のセットアップなしで機能します。 問題が発生した場合は、corepack disableを実行して、システムからプロキシを削除してください(そして、Corepackリポジトリで問題を提起して、お知らせください)。

パッケージの設定

Corepackプロキシは、現在のディレクトリ階層内で最も近いpackage.jsonファイルを探し、その"packageManager"プロパティを抽出します。

値がサポートされているパッケージマネージャーに対応する場合、Corepackは、関連するバイナリへのすべての呼び出しが要求されたバージョンに対して実行されるようにします。必要に応じてオンデマンドでダウンロードし、正常に取得できない場合は中止します。

corepack useを使用すると、Corepackにローカルのpackage.jsonを更新して、選択したパッケージマネージャーを使用するように指示できます。

bash
corepack use  # package.jsonに最新の7.xバージョンを設定します
corepack use yarn@* # package.jsonに最新バージョンを設定します

グローバルバージョンのアップグレード

既存のプロジェクトの外部で実行する場合(たとえば、yarn initを実行する場合)、Corepackはデフォルトで、各ツールの最新の安定版リリースにほぼ対応する事前定義されたバージョンを使用します。これらのバージョンは、設定するパッケージマネージャーのバージョンとともにcorepack installコマンドを実行することでオーバーライドできます。

bash
corepack install --global

または、タグまたは範囲を使用できます。

bash
corepack install --global pnpm@*
corepack install --global yarn@stable

オフラインワークフロー

多くの本番環境にはネットワークアクセスがありません。Corepackは通常、パッケージマネージャーのリリースをレジストリから直接ダウンロードするため、このような環境と競合する可能性があります。これを回避するには、ネットワークアクセスがまだある間に(通常はデプロイイメージを準備するのと同時に)corepack packコマンドを呼び出します。これにより、ネットワークアクセスがなくても必要なパッケージマネージャーが利用可能になります。

packコマンドにはさまざまなフラグがあります。詳細については、詳細なCorepackドキュメントを参照してください。

サポートされているパッケージマネージャー

Corepackを通じて、以下のバイナリが提供されます。

パッケージマネージャーバイナリ名
Yarnyarn , yarnpkg
pnpmpnpm , pnpx

よくある質問

Corepackはnpmとどのように連携しますか?

Corepackは他のパッケージマネージャーと同様にnpmをサポートできますが、そのシムはデフォルトでは有効になっていません。これにはいくつかの結果が伴います。

  • Corepackはそれを傍受できないため、別のパッケージマネージャーで使用するように構成されたプロジェクト内で npm コマンドを常に実行できます。
  • npm"packageManager" プロパティの有効なオプションですが、シムがないため、グローバルnpmが使用されます。

npm install -g yarn が動作しません

npmは、グローバルインストール時にCorepackバイナリを誤って上書きすることを防ぎます。この問題を回避するには、次のいずれかのオプションを検討してください。

  • このコマンドを実行しないでください。Corepackはとにかくパッケージマネージャーのバイナリを提供し、要求されたバージョンが常に利用可能であることを保証するため、パッケージマネージャーを明示的にインストールする必要はありません。
  • npm install--force フラグを追加します。これにより、npmにバイナリを上書きしても問題ないことを指示しますが、その過程でCorepackのバイナリを消去します。(それらを戻すには、corepack enable を実行してください。)