目次
8. Node.js Corepack が npm をインターセプトする
1 はじめに
Corepack は、パッケージ マネージャーのバージョン管理に役立つ実験的なツールです。これは、サポートされている各パッケージ マネージャーのバイナリ プロキシを公開します。バイナリ プロキシは、呼び出すと、現在のプロジェクトに構成されているパッケージ マネージャーを認識し、必要に応じて明示的にインストールでき、最終的には明示的なユーザー操作なしで実行できます。
この機能により、次の 2 つの主要なワークフローが簡素化されます。
- これにより、システム固有のインストール プロセスに従う必要がなくなり、必要なパッケージ マネージャーを用意するだけで済むため、新しい寄稿者の参入障壁が簡素化されます。
- これにより、更新が必要になるたびに手動で同期する必要がなく、チームの全員が使用したいバージョンのパッケージ マネージャーを確実に使用できるようになります。
2.コアパックを有効にする
まだ実験段階であるため、デフォルトでは有効になっておらず、使用するには明示的に有効にする必要があり、バイナリ ファイルの隣の環境にシンボリック リンクを設定します (必要に応じて既存のシンボリック リンクを上書きします)。有効にするには、次のコマンドを実行します。
corepack enable
今後は、サポートされているバイナリへの呼び出しは、追加のセットアップなしで機能します。問題が発生した場合は、次のコマンドを実行して無効にすることもできます。
corepack disable
3.Node.jsコアパックを使用する
2 つのバージョンの Node をローカルにインストールし、対応するバージョンに Corepack が含まれているかどうかを確認します。
ノードの複数バージョンのインストールについては、以下も参照できます。
http://t.csdn.cn/8Ci3j http://t.csdn.cn/8Ci3j
次のバージョン (V14.4.0) のディレクトリを確認すると、以下に示すようにコアパックが見つかりません。
次のバージョン (V16.16.0) のディレクトリを確認してコアパックが見つからない場合は、手動でコアパックを有効にして次のコマンドを実行します。
コアパックを有効にする
ディレクトリは次の図に示されています。
corepack enable コマンドを実行すると、以下にさらに pnpm および Yarn 関連のファイルがあることがわかります。
コマンド ラインから次のコアパックとそれに対応するバージョンを表示することもできます。
C:\Users\Administrator>corepack -v
0.17.0
4. 構成パッケージ
Corepack プロキシは、ディレクトリ内で最も近い package.json ファイルを見つけます。「packageManager」プロパティを抽出するための現在のディレクトリ階層。
値がサポートされているパッケージ マネージャーに対応する場合
、Corepack は問題のバイナリへのすべての呼び出しが要求されたバージョンのものであることを確認し、必要に応じてオンデマンドでダウンロードするか、正常に取得できない場合は中止します。
たとえば、次のような構成です。
{
"name": "test_yilai",
"version": "1.0.0",
"packageManager": "[email protected]",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"element-plus": "^2.3.7",
"element-ui": "^2.15.13",
"lodash": "^4.17.21"
}
}
構成後、次の依存関係をインストールしてみてください。
yarn install
Usage Error: This project is configured to use pnpm
packageManagerをyarnに変更した場合
{
"name": "test_yilai",
"version": "1.0.0",
"packageManager": "[email protected]",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"element-plus": "^2.3.7",
"element-ui": "^2.15.13",
"lodash": "^4.17.21"
}
}
pnpm の実行結果を見てください。
pnpm instal
Usage Error: This project is configured to use yarn
この問題を解決するには、パッケージ インストール アーティファクト (ni) を使用します。次のコマンドを実行してインストールします。
npm i -g @antfu/ni
完了したら、次の図に示すように、コマンド ラインに「ni」を直接入力し、Enter キーを押してパッケージをインストールします。
設置に最適なものが見つかります。。。。。。
5. グローバルバージョンをアップグレードする
既存のプロジェクトの外部で実行している場合 (たとえば、yarn init の実行中)、Corepack はデフォルトで、各ツールの最新の安定リリースに対応する事前定義されたバージョンを使用します。これらのバージョンは、corepack prepare コマンドを実行することで、設定したいパッケージ マネージャーのバージョンに合わせて設定できます。
corepack prepare [email protected] --activate
あるいは、ラベルまたは範囲を使用することもできます。
corepack prepare pnpm@latest --activate
corepack prepare yarn@stable --activate
6. オフラインのワークフロー
多くの実稼働環境にはネットワーク アクセスがありません。Corepack は通常、パッケージ マネージャーのディストリビューションをレジストリから直接ダウンロードするため、そのような環境と競合する可能性があります。これを回避するには、ネットワークにアクセスできる状態で (通常は展開用のイメージを準備しているときに) corepack prepare コマンドを呼び出します。これにより、ネットワークにアクセスできなくても、必要なパッケージ マネージャーを利用できるようになります。
7. サポートされているパッケージマネージャー
次のバイナリは Corepack 経由で提供されます。
パッケージマネージャー |
バイナリ名 |
糸 |
|
pnpm |
|
8. Node.js Corepack が npm をインターセプトする
Corepack は他のパッケージ マネージャーと同様に npm をサポートできますが、デフォルトでは有効になっていません。
プロパティ内の有効なオプションですが、有効になりませnpm
ん。"packageManager"
もちろん、インターセプトしたい場合は、corepack enpm を使用して解決する必要があります。
9. Corepack共通コマンド
corepackenable コアパック機能をオンにする
corepack 無効化 corepack 機能の削除
corepack quantum は、パッケージ マネージャーをキャッシュにインポートします。
corepack prepare パッケージマネージャーアーカイブを生成します