Node.js v21.7.2 ドキュメント
- Node.js v21.7.2
- ► 目次
-
► インデックス
- アサーションテスト
- 非同期コンテキスト追跡
- Async Hooks
- Buffer
- C++アドオン
- Node-API を使用した C/C++ アドオン
- C++ エンベダーAPI
- 子プロセス
- Cluster
- コマンドラインオプション
- Console
- Corepack
- Crypto
- デバッガー
- 非推奨のAPI
- Diagnostics Channel
- DNS
- Domain
- エラー
- Events
- ファイルシステム
- グローバル
- HTTP
- HTTP/2
- HTTPS
- インスペクター
- 国際化
- モジュール: CommonJSモジュール
- モジュール: ECMAScriptモジュール
- モジュール:
node:module
API - モジュール: パッケージ
- Net
- OS
- Path
- パフォーマンスフック
- パーミッション
- Process
- Punycode
- クエリストリング
- Readline
- REPL
- レポート
- 単一実行可能アプリケーション
- Stream
- String Decoder
- テストランナー
- タイマー
- TLS/SSL
- トレースイベント
- TTY
- UDP/データグラム
- URL
- ユーティリティ
- V8
- VM
- WASI
- Web Crypto API
- Web Streams API
- ワーカー スレッド
- Zlib
- ► その他のバージョン
- ► オプション
Corepack#
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
を更新して、選択したパッケージマネージャーを使用するように依頼できます。
corepack use [email protected] # sets the latest 7.x version in the package.json
corepack use yarn@* # sets the latest version in the package.json
グローバルバージョンのアップグレード#
既存のプロジェクトの外部で実行する場合(たとえば、yarn init
を実行する場合)、Corepackはデフォルトで、各ツールからの最新の安定リリースにほぼ対応する定義済みのバージョンを使用します。これらのバージョンは、設定したいパッケージマネージャーバージョンと一緒にcorepack install
コマンドを実行することでオーバーライドできます。
corepack install --global [email protected]
あるいは、タグまたは範囲を使用することもできます。
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
を実行してください。)