- Node.js技術運営委員会(TSC)が、Corepackを今後はNode.jsに同梱して配布しないことを正式投票で決定
- Node.js 25から適用され、Node.js 24以下では引き続き実験的機能として提供される
Corepackの役割と限界
- CorepackはNode.js 16.9.0で導入された実験的ツールで、Yarnやpnpmのようなパッケージマネージャーを別途インストールせずに利用できるようにする
- プロジェクトで特定のパッケージマネージャーのバージョンを強制できるよう支援する役割を担う
- しかし、ユーザーの認知不足や目的に対する誤解により、広く使われるには至らなかった
- ランタイムとは独立して動作すべきパッケージマネージャーをNode.jsに含めることへの懐疑論も存在した
Corepack削除までの経緯
- Corepackの今後をめぐる議論は数年にわたり続いており、2023年11月にはデフォルトで有効化する提案が論争を呼んだ
- 2024年2月には、CorepackがnpmとNode.jsの結び付きを解消する手段として使われうるとの懸念が示された
- 2024年3月には、npmは引き続きNode.jsに同梱されることを明確にしつつ、Corepackの削除可能性が浮上した
- TSCはこの件に関する判断をパッケージ保守ワーキンググループ(PMWG)に委任
- PMWGは次のような削除ロードマップを提示した:
- Node.jsダウンロードページで、nvmやfnmのようなバージョン管理ツールを強調
- CorepackのドキュメントをNode.js APIドキュメントから分離し、別リポジトリへ移動
- 次のメジャーリリースからCorepackをNode.js配布物から削除
- このロードマップはPMWG内で強い支持を得て、最終投票へと進んだ
Corepack削除決定の理由
- 採用率の低さ: 多くの開発者はCorepackの代わりに、各自が好むパッケージマネージャーを直接インストールして利用している
- 配布に関する懸念: CorepackがNode.jsバイナリに含まれていること自体が不要だという意見がある
- 長期保守の問題: CorepackがNode.jsから分離されれば、パッケージマネージャーはより独立して発展できる
- 投票の結果、「今後段階的に削除する」提案が採択された
- 他の提案(例: デフォルトで無効のまま維持する)は十分な支持を得られなかった
- 一部の開発者は、npmの代わりにCorepackを使ってpnpmを活用していたため、この決定を後退だと評価している
- Node.js側は、Corepackはもともと恒久的な機能ではなく、分離して維持されることが望ましいと強調している
今後の変化
- 今後のNode.jsではCorepackがデフォルトで同梱されない
- 必要な場合は、次のコマンドで手動インストールする必要がある:
- Corepackを利用するプロジェクトは、ドキュメントやワークフローを更新する必要がある
- ただし今回の決定はCorepackのサポート終了を意味するものではなく、あくまでNode.jsから削除されるという意味にとどまる
- Node.js 24.xがEOLになるまでは、Corepackの保守は継続される
Node.jsとパッケージマネージャーの歴史的文脈
- 過去にも、Node.jsに何を含めるべきかをめぐる論争があり、npmを同梱するかどうかもその一つだった
- Yarnやpnpmなど代替パッケージマネージャーの登場により、選択肢は多様化した
- Corepackの削除は、Node.js配布物をより簡潔にするための動きの一環である
- これは、ランタイムとパッケージマネージャーを分離する他言語エコシステムの流れとも一致する
- 開発者は今後、Node.jsにCorepackが含まれないことを前提に開発環境を整える必要がある
まだコメントはありません。