corepack prepare pnpm@latest --activate は、pnpmの最新版をダウンロードして、プロジェクトの外で使う既定の版に設定するコマンドです。今も動きますが、Corepack 0.20.0(2023年8月)でヘルプの一覧から外れました。後継は corepack install -g と corepack pack です。さらにNode.js 25.0.0(2025年10月15日)からCorepack自体がNode.jsに同梱されなくなり、Node.js 25以降では corepack コマンドがそもそも見つかりません。
以下のコマンドの出力は、Node.js v26.5.0(macOS・x64)にCorepack 0.36.0(2026年8月28日公開の最新版)を入れ、pnpm 9.15.9〜12.11.2で実行して確かめたものです(2026年10月15日時点)。
まとめ:corepack prepareとpnpm管理の要点
corepack prepareは0.20.0でヘルプから外れた旧コマンドです。0.36.0でも警告なしで動きますが、新しく書く手順ではcorepack install -g pnpm@<版>(既定の版を切り替える)かcorepack pack(オフライン用に固める)を使います。- プロジェクトにpnpmの版を固定するなら
corepack use pnpm@<版>。package.jsonのpackageManagerにハッシュ付きで書き込まれます。同じメジャー内の更新はcorepack upです。 - Node.js 25以降はCorepackが同梱されないので、
npm install -g corepackで入れます(pnpmとYarnのシムも同時に置かれます)。Node.js 26は2026年10月28日にLTSへ移る予定で、CorepackのないLTSが始まります。 - 「you should update pnpm with corepack」は、Corepack経由で動いているpnpmに
pnpm self-updateを実行したときのエラーです。corepack use pnpm@latestで直します。 - pnpm 10以降はpnpm自身が
packageManagerを読んで版を切り替えます。pnpmだけを使うプロジェクトなら、Corepackを入れなくても版はそろいます。 - Node.js 26の非推奨警告DEP0205は
module.register()が対象で、Corepackとは無関係です。
Corepackの役割と配布形態の変化
Corepackは、pnpmとYarnの版をプロジェクトごとに切り替える仲介役です。pnpm や yarn のコマンドを横取りし、package.jsonの packageManager に書かれた版がなければダウンロードして実行します。Node.js本体の版は切り替えないので、Node.jsの版をそろえるならmiseとは?mise.tomlでツール・環境変数・タスクを束ねる導入手順【2026年版】で紹介しているmiseなどを併用します。npm自体の役割はnpmとは?CLIとレジストリの役割・package.jsonとv12の変更点を解説にまとめています。
Node.js 25.0.0で同梱が終わった経緯
Node.jsの技術運営委員会(TSC)は、「Should Corepack stay in the Node.js distribution?」の投票を2025年3月19日に締め切り、Node.js 25以降はCorepackを配布しないと決めました。実装はnodejs/node PR #57617「build: stop distributing Corepack」で、Node.js 25.0.0(2025年10月15日)に入りました。Node.js 24のCorepackのドキュメントには「Corepack will no longer be distributed starting with Node.js v25.」と書かれています。
| Node.js | Corepack | サポート期限 |
|---|---|---|
| 14.19.0・16.9.0〜24.20.x | 同梱(Experimental) | 24.xは2028-04-30 |
| 24.21.0以降の24.x | 同梱(0.36.0) | 2028-04-30 |
| 25.x | 同梱なし | 2026-06-01に終了済み |
| 26.x | 同梱なし | LTS入り2026-10-28予定 |
同梱をやめたのはNode.jsの配布物からで、Corepackの開発はnodejs/corepackで続いています。npmの corepack パッケージは0.36.0が最新です。ただし0.36.0の engines は ^22.22.2 || ^24.15.0 || >=26.0.0 で、Node.js 20・23・25は対象外です(npmは導入を止めませんが、動作は保証されません)。Node.js 26で出る非推奨警告DEP0205は module.register() を対象にしたもの(25.9.0で文書のみ、26.0.0で実行時の警告)で、Corepackの同梱終了とは無関係です。
Corepackを導入する:npm install -g corepackとcorepack enable
Node.js 25以降、またはNode.js 24に同梱された古いCorepackを更新したいときは、npmでグローバルに入れます。グローバルに入れたpnpmやYarnは先に消します。
npm uninstall -g pnpm yarn
npm install -g corepack@latest
corepack --version
# 0.36.0
corepack enable
npmで入れたCorepackは、package.jsonの bin に従って導入した時点で pnpm・pnpx・yarn・yarnpkg の4つのシム(中継用のリンク)を置きます。この場合 corepack enable は必須ではありません。Node.js 24以前に同梱されたCorepackでは corepack enable がNode.jsのインストール先にシムを作り、corepack enable pnpm と名前を付けると pnpm と pnpx の2つだけになります。置き場所を変えるなら --install-directory を付けます。
corepack enable pnpm --install-directory ~/.local/bin
ls ~/.local/bin
# pnpm pnpx
corepack disable pnpm # シムを消す。ダウンロード済みのpnpmは残る
corepack prepareの使い方と非推奨の扱い
corepack prepare は、指定した版のパッケージマネージャを COREPACK_HOME(macOS・Linuxの既定は ~/.cache/node/corepack)にダウンロードします。--activate を付けると、その版を「プロジェクト外で使う既定の版」として lastKnownGood.json に記録します。
corepack prepare pnpm@latest --activateの実行結果
Corepack 0.36.0で実行した結果です。latest や stable のようなタグも受け付けます。
$ corepack prepare pnpm@latest --activate
Preparing pnpm@latest for immediate activation...
$ corepack prepare yarn@stable --activate
Preparing yarn@stable for immediate activation...
$ cat ~/.cache/node/corepack/lastKnownGood.json
{
"pnpm": "12.11.2",
"yarn": "4.18.1"
}
引数を省いた corepack prepare は、package.jsonの packageManager(なければ devEngines.packageManager)の版を準備します。どちらもないプロジェクトでは次のエラーで止まります。
Usage Error: The local project doesn't feature a 'packageManager' field nor a 'devEngines.packageManager' field - please specify the package manager to pack, or update the manifest to reference it
Corepack 0.20.0で非推奨になったコマンドと後継
Corepack 0.20.0(2023年8月29日)のCLI再編で、install・use・up・pack が加わり、prepare と hydrate はソース上 commands/deprecated/ へ移されました。corepack --help にはもう出てきません。実行しても警告は出ず、0.36.0でも動くので、古いDockerfileがすぐ壊れることはありません。ただ、公式READMEは後継のコマンドしか説明していないため、新しく書く手順は次の対応表に合わせて書き換えます。
| やりたいこと | 旧コマンド | 0.20.0以降 |
|---|---|---|
| 既定の版を切り替える | prepare pnpm@9 --activate |
install -g pnpm@9 |
| プロジェクトの版を取得 | prepare(引数なし) |
install(引数なし) |
| オフライン用に固める | prepare -o |
pack -o |
| 固めたものを展開 | hydrate |
install -g --cache-only |
| プロジェクトに版を固定 | (なし) | use pnpm@9 |
corepack install -g [email protected] を実行すると lastKnownGood.json の pnpm が9.15.9に変わり、prepare --activate と同じ結果になりました。一方、引数なしの corepack install はプロジェクトの版をキャッシュに入れるだけで、既定の版は変えません。
packageManagerでpnpmのバージョンを固定する
チーム全員が同じ版のpnpmを使うには、package.jsonの packageManager に版を書きます。「.npmrcにpackage-managerを書く」という古い解説がありますが、Corepackが読むのはpackage.jsonの packageManager と devEngines.packageManager だけです。
corepack useで版を書き込む
corepack use は、指定した範囲の最新版を調べてpackage.jsonに書き込み、そのまま pnpm install まで実行します。
$ corepack use pnpm@latest
Installing [email protected] in the project...
Done in 302ms using pnpm v12.11.2
$ cat package.json
{
"name": "p2",
"version": "1.0.0",
"packageManager": "[email protected]+sha512.25a51652a196...(省略)"
}
corepack use でメジャーを変えてnode_modulesの作り直しが要るとき、端末もCI変数もない環境(docker buildやスクリプト)では、package.jsonは書き換わったうえで ERR_PNPM_ABORTED_REMOVE_MODULES_DIR_NO_TTY により pnpm install だけが止まります。CI=true を付けて実行します。
+sha512. 以降はダウンロードしたファイルのハッシュで、別のファイルにすり替わっていれば検証で止まります。手で書くなら "packageManager": "[email protected]" のように完全な版番号にします。"pnpm@10" のような範囲を書くと「Invalid package manager specification in package.json (pnpm@10); expected a semver version」で止まります。packageManager がないプロジェクトで pnpm を実行すると、Corepackは既定の版(このときは12.11.2)を使い、package.jsonには何も書き足しませんでした。自動で書き足させたいときは COREPACK_ENABLE_AUTO_PIN=1 を設定します。
corepack upで同じメジャー内の最新版に上げる
corepack up は、今の packageManager と同じメジャーの範囲で最新版に上げます。[email protected] のプロジェクトで実行すると [email protected] に変わり、11や12には上がりませんでした。10.34.7はnpmのdist-tagでは next-10(latest-10 は10.34.6)で、Corepackはタグではなく範囲内の最も新しい版を選びます。メジャーを上げるときは corepack use pnpm@latest を明示します。
devEngines.packageManagerの範囲指定
Corepack 0.32.0(2025年2月)から devEngines.packageManager を読み、0.36.0からは packageManager がないときにここの範囲から版を選ぶようになりました。範囲で書くと、ネットワーク(またはキャッシュにある該当版)を使って解決するため、時期によって選ばれる版が変わります。再現性を優先するなら packageManager に完全な版を書きます。
{
"devEngines": {
"packageManager": { "name": "pnpm", "version": "^12.0.0", "onFail": "warn" }
}
}
「you should update pnpm with corepack」の原因と対処
このメッセージは ERR_PNPM_CANT_SELF_UPDATE_IN_COREPACK というエラーの本文です。pnpm self-update は、pnpmが自分自身を新しい版に入れ替えるコマンドですが、Corepack経由で動いているpnpmは自分を入れ替えられないので失敗します。新しい版を「推奨されている」という通知ではありません。エラーの文面は版によって違います。
| pnpm | pnpm self-update の表示(Corepack経由) |
|---|---|
| 9.15.9 | You should update pnpm with corepack |
| 10.34.7・11.28.2 | pnpm cannot update itself when it is executed by Corepack |
| 12.11.2 | 同上(Error: で始まる形式) |
10.34.7と11.28.2は2行目に「Install pnpm with the standalone script instead: curl -fsSL https://get.pnpm.io/install.sh | sh -」と続きます。Corepackを使い続けるなら、スタンドアロン版に切り替えず、Corepack側で版を上げます。pnpmメンテナーも公式Discussionsで同じ方法を案内しています。
# プロジェクトの版を上げる(package.jsonのpackageManagerが書き換わる)
corepack use pnpm@latest
# プロジェクト外で使う既定の版を上げる
corepack install -g pnpm@latest
pnpm add -g pnpm は、Corepackとは関係なくpnpm自身が拒否し、pnpm self-update を使うよう案内します(12.11.2では ERR_PNPM_GLOBAL_PNPM_INSTALL)。Corepack経由では案内どおりにしても上のエラーになるので、Corepack側で上げます。版を確かめるときは、pnpm -v の表示とpackage.jsonの packageManager を並べて見ます。プロジェクト内では packageManager の値が優先されます。
Corepackを使わずにpnpmの版をそろえる方法
Corepackを入れる手間を省きたいなら、pnpm自身の版管理を使えます。pnpm 10.0.0で manage-package-manager-versions が既定で有効になり、pnpmが packageManager を読んで、書かれた版をダウンロードして実行するようになりました。pnpm 11.0.0ではこの設定が pmOnFail に置き換わり、既定値 download で同じ動きをします。グローバルに入っているpnpm 11.15.1を、"packageManager": "[email protected]" のプロジェクトで実行した結果です(Corepackは使っていません)。
$ pnpm -v # プロジェクトの外
11.15.1
$ cd p3 && pnpm -v # packageManager: [email protected]
10.34.7
| pmOnFail | 版が食い違ったとき | 旧設定 |
|---|---|---|
| download(既定) | 宣言された版を取得して実行 | managePackageManagerVersions: true |
| error | コマンドを失敗させる | packageManagerStrictVersion: true |
| warn | 警告して続行 | packageManagerStrict: false |
| ignore | 確認しない | managePackageManagerVersions: false |
pnpm 12はネイティブの実行ファイルとして配布され、スタンドアロン版はNode.jsなしで動きます(npm経由で入れるときだけNode.js 22.13以降が必要)。pnpmのインストール手順は、pnpm 10のドキュメントまであった「Using Corepack」の節を11以降で削っています。pnpm 12.11.2もCorepack経由で動きますが、pnpmだけを使うチームなら npm install -g pnpm かスタンドアロンのスクリプトで入れて、packageManager の固定はpnpmに任せるほうが手順は少なく済みます。Corepackが残る理由は、YarnとpnpmのプロジェクトをCorepack1つで扱いたい場合です。Yarnの公式手順は今も npm install -g corepack から始まります(Yarnの版の扱いはYarn BerryとClassicの違い:4.18の既定設定・enableScripts・v1からの移行手順で解説しています)。pnpm本体の仕組みはpnpmとは?共有ストアの仕組みとv12のRust実装・モノレポ運用を解説を参照してください。
CI・Docker・オフライン環境でCorepackを使う設定
「Node.jsを入れればcorepackも入っている」前提のビルドは、Node.js 25以降のイメージで corepack: command not found になります。Node.js 26の公式Dockerイメージ(docker-node)のDockerfileにも、Corepackを入れる行はありません。Node.js 26がLTSになると、LTSへ上げただけでCIが落ちるケースが増えるため、Corepackを入れる行を明示しておきます。CI/CDパイプラインの設計から見直す場合は、DevOps・CI/CD導入支援でも相談を受けています。
DockerfileとGitHub Actionsの書き方
Corepackの版も固定しておくと、Corepackの更新でビルドの挙動が変わるのを防げます。
FROM node:26-bookworm-slim
RUN npm install -g [email protected] && corepack enable pnpm
WORKDIR /app
COPY package.json pnpm-lock.yaml ./
RUN corepack install && pnpm install --frozen-lockfile
GitHub Actionsでも、actions/setup-node の後に npm install -g [email protected] と corepack enable を実行するステップを置きます。ただしsetup-nodeで cache: 'pnpm' を使うなら、setup-nodeの時点でpnpmが要ります。setup-nodeの公式例も、pnpm/action-setup をsetup-nodeより前に置いています。setup-nodeの入力やキャッシュの設定はactions/setup-nodeとは|v7の入力・キャッシュ設定とv5以降の既定変更で扱っています。CIではダウンロード前の確認プロンプトは出ません(Corepackは標準入力が端末で、CI環境でないときだけ確認します)。
ネットワークのない環境へのpnpm持ち込み
ネットワークに出られるマシンで corepack pack を実行してtarballを作り、持ち込んだ先で install -g --cache-only で展開します。--cache-only はキャッシュに置くだけで既定の版は変えないので、packageManager に同じ版を書いたプロジェクトの中で使います。pnpm 10.34.7で作ったtarballは約4.9MBでした。
# ネットワークに出られるマシンで
corepack pack [email protected] -o pm.tgz
# 持ち込んだ先で
corepack install -g --cache-only pm.tgz
cd my-app # packageManager: [email protected]
COREPACK_ENABLE_NETWORK=0 pnpm -v
# 10.34.7
COREPACK_ENABLE_NETWORK=0 のまま、キャッシュにない版(例:[email protected])を要求すると「Network access disabled by the environment; can’t reach https://registry.npmjs.org/pnpm/-/pnpm-10.33.0.tgz」で止まります。
Corepackの主な環境変数7種
いずれもCorepackのREADMEに定義があります。
| 環境変数 | 値と効果 |
|---|---|
| COREPACK_ENABLE_DOWNLOAD_PROMPT | 0でダウンロード時のURL表示と確認を止める |
| COREPACK_ENABLE_STRICT | 0で別のパッケージマネージャの実行を許す |
| COREPACK_ENABLE_NETWORK | 0でネットワークに出ない |
| COREPACK_ENABLE_AUTO_PIN | 1でpackageManagerを自動で書き足す |
| COREPACK_HOME | ダウンロード先を変える |
| COREPACK_NPM_REGISTRY | 取得元のレジストリを変える |
| COREPACK_INTEGRITY_KEYS | 0か空で署名検証を省く |
Corepackのエラーと使わない判断
Cannot find matching keyidエラーの原因と対処
2025年1月下旬、npmレジストリの新しい署名鍵で署名されたpnpm 10.1.0などを、古いCorepackが検証できなくなりました(nodejs/corepack #612)。エラーは Error: Cannot find matching keyid: {"signatures":[... です。2025年1月27日公開のCorepack 0.31.0で直っているので、npm install -g corepack@latest で更新します。COREPACK_INTEGRITY_KEYS=0 で検証を外す回避策もありますが、改ざんの検知も止まるため、更新できない環境での一時しのぎに限ります。
This project is configured to use pnpmエラーの原因
"packageManager": "pnpm@..." のプロジェクトで yarn を実行すると、Corepackは This project is configured to use pnpm because .../package.json has a "packageManager" field で止めます。誤ってロックファイルを2種類作るのを防ぐ仕組みなので、基本はそのままにします。どうしても実行するなら COREPACK_ENABLE_STRICT=0 を付けると、Yarnはプロジェクト外の既定の版(このときは4.18.1)で動きました。
Corepackを使わないほうがよい場面
次の条件に当てはまるなら、Corepackは入れないほうが運用は単純です。逆に、YarnとpnpmをCorepack1つで扱う場合は入れる価値があります。
- pnpmしか使わないチーム:pnpm 10以降は自分で
packageManagerを守るので、Corepackを足しても同じ仕事が2重になるだけです。 - Node.jsの版もツールで管理している:miseのようにNode.jsとpnpmを1つのファイルで固定できるツールがあれば、Corepackの導入手順を別に持つ理由がありません。Voltaは2025年11月にメンテナンス終了を告知しているので、新規に選ぶならVolta(ヴォルタ)とは?Node.jsバージョン管理の使い方とメンテ終了・mise移行【2026年】の移行手順を先に読んでください。
- Node.js 20以前に留まる環境:最新のCorepackは動作対象外の組み合わせになり、古い版に留めると署名鍵の問題のような修正を受け取れません。
よくある質問
corepack prepareは非推奨ですか?
0.20.0でヘルプから外れ、ソース上もdeprecatedの扱いです。0.36.0でも動きますが、corepack install -g か corepack pack に書き換えます。
corepack prepareとcorepack useの違いは何ですか?
prepare --activate はプロジェクト外の既定の版を変え、use はpackage.jsonの packageManager に版を書き込みます。プロジェクトの版を固定するなら use です。
Node.js 25や26でcorepackコマンドが見つからないのはなぜですか?
Node.js 25.0.0から同梱されなくなったためです。npm install -g corepack で入れると、corepack と pnpm・yarn のコマンドが使えるようになります。
corepack enable pnpmとcorepack enableの違いは何ですか?
名前なしはpnpm・pnpx・yarn・yarnpkgの4つ、corepack enable pnpm はpnpmとpnpxの2つのシムを作ります。npmで入れたCorepackは導入時に4つとも置かれます。
Corepackでpnpmを更新するにはどうしますか?
プロジェクトの版は corepack use pnpm@latest、プロジェクト外の既定の版は corepack install -g pnpm@latest で更新します。
nvmとCorepackは併用できますか?
併用できます。Corepackとシムは版ごとのNode.jsのインストール先に置かれるので、nvmで切り替えた先の版ごとに、Node.js 24以前なら corepack enable、Node.js 25以降なら npm install -g corepack をやり直します。