40 人が閲覧(直近 30 日) Node.js

corepack prepareは非推奨?後継のinstall -g・use・enableとpnpmの版管理、Node.js 25以降の導入

corepack prepareは非推奨?後継のinstall -g・use・enableとpnpmの版管理、Node.js 25以降の導入

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 をやり直します。

関連記事

お気に入りに入れた記事の一覧

この記事は以下の記事からリンクされています

ほか 5 件の記事からもリンクされています。

資料請求

今日のトレンド記事 直近 24 時間で、いつもより多く読まれている記事

  1. 2026.10.23 テックブログ Renta!不正アクセスでサービス停止:再開未定の現状と運営側の停止判断・証拠保全・段階的再開
  2. 2026.07.09 テックブログ Muse Imageとは?Metaの画像生成AIの使い方・API料金(1枚0.01ドル)と日本での提供状況【2026年10月】
  3. 2025.01.09 コラム アドレサブルCM(Addressable CM)とは?フジテレビで出る表示の意味・仕組みと視聴データの扱い
  4. 2025.12.10 コラム 今の50代は何世代?バブル世代・団塊ジュニア・氷河期の境目と特徴
  5. 2026.10.22 テックブログ Tomcatのバージョン一覧とサポート期限【2026年10月】最新版11.0.27、9.0系は2027年3月末終了・9.1系は2030年末まで

RELATED POSTS 関連記事

目次