メインコンテンツまでスキップ

第11章:Corepackのいま:入る場合/入らない場合の整理 🧩🧰⚡️

Corepackは「プロジェクトごとに、使うパッケージマネージャ(pnpm / Yarn)の“バージョンを固定”して、全員で揃える」ための仕組みだよ 😄✨ やること自体はシンプルで、効果がデカい(ローカル・コンテナ・CIでズレなくなる)ので、ここで土台を固めよう!🔒


✅ この章でできるようになること 🧠✨

  • pnpm / Yarn の バージョン差で壊れる・遅くなるを防ぐ(ロックファイル揺れ、再ビルド増など)🧯
  • ローカルとコンテナで 同じpnpm/Yarnが動く状態を作る 🐳🔁
  • 「Corepackが入ってない/効いてない」時の 典型トラブルを即解決できる 😵‍💫➡️😆

1) Corepackって結局なに?🤔➡️😎

Corepackは Node.js同梱の“パッケージマネージャ管理ツール”pnpmyarn を直接グローバルインストールしなくても、

  • プロジェクトの package.json を見て(packageManager
  • 指定されたバージョンの pnpm/Yarn を必要ならDLして
  • そのバージョンで実行してくれる

…って動き方をするよ 🧩 (この「プロジェクト設定を見て、足りなければ落としてくる」が本質!) (nodejs.org)


2) 「入る/入らない」「効く/効かない」整理(ここが罠)🪤

✅ (A) “入ってる”ケース(でもまだ油断ダメ)🧨

Corepack自体は、公式のNode.js配布に同梱されている(Node 14.19 / 16.9 以降)よ 📦 (yarnpkg.com) さらに、Corepackは今でも Experimental扱いで、明示的に有効化が必要って書かれてる。つまり——

入ってても、corepack enable しないと効かないことがある 😵‍💫

(nodejs.org)

✅ (B) “入ってない”ことがあるケース 😭

OSのパッケージ管理経由などの「サードパーティ配布」だと、Corepackが最初から入ってないことがある(とYarn側が注意してる)⚠️ (yarnpkg.com) その場合は npm install -g corepack で入れてから corepack enable が効く、という案内もあるよ 🛠️ (yarnpkg.com)

🔎 2026のNodeの“今”も軽く押さえとく 🗓️

Nodeのリリースラインは動くので、チーム内でバージョンが割れるとCorepack以前に色々ズレるよね。 Node公式のリリース一覧だと、v24がLTS、v25がCurrent みたいに整理されてる(更新日も載ってる)📌 (nodejs.org)


3) “固定”の本丸:package.jsonpackageManager 🔒🎯

Corepackは 近い階層の package.json を探してpackageManager を読み取るよ 🧭 (nodejs.org)

例:pnpmを固定する(2026-02時点で pnpm 10.29.2 がリリースとして表示されてる)📌 (GitHub)

{
"name": "my-app",
"private": true,
"packageManager": "pnpm@10.29.2"
}

👍 付け方のいちばんラクな方法:corepack use

Node公式ドキュメントにも、corepack usepackage.json を更新できるって書かれてるよ 🪄 (nodejs.org)

corepack enable
corepack use pnpm@10.29.2

Yarnも同じノリ:

corepack enable
corepack use yarn@*

yarn@* みたいな指定もできるけど、“完全再現”を狙うなら最終的に固定バージョンに寄せるのが安心だよ(ロックファイルと一緒に固定、が気持ちいい)🔒✨ (Corepackが「チーム全員が同じバージョンを使えるようにする」目的だよ〜という説明もある) (nodejs.org)


4) 🧪ミニ演習:ローカル⇄コンテナで“同じpnpm”に揃える 🔁🐳

Step 0: まず現状チェック 👀

node -v
corepack --version
pnpm -v
yarn -v

pnpm: command not found とか出てもOK(ここから直す)👌


Step 1: Corepackを有効化する ⚙️

corepack enable

Corepackは「有効化しないと効果がない」って明記されてるやつね 🧩 (nodejs.org)


Step 2: プロジェクトに“使うpnpmのバージョン”を書き込む 📝🔒

corepack use pnpm@10.29.2

これで package.jsonpackageManager が入って、プロジェクトとして固定できる 🎯 (nodejs.org)


Step 3: インストールして、バージョンが揃うのを確認 ✅

pnpm -v
pnpm install

ここでCorepackが必要ならDLしてくれる(初回だけネットが要る)📥 (nodejs.org)


Step 4: コンテナ側でも同じことが起きるのを確認 🐳✨

「コンテナ内でもCorepackが読めて、同じpnpmになる」最低限の例👇

FROM node:24-bookworm-slim

WORKDIR /app

## 1) Corepackを有効化
RUN corepack enable

## 2) packageManager を含む package.json を先にコピー(キャッシュにも嬉しい)
COPY package.json pnpm-lock.yaml* ./

## 3) ここでCorepackが "packageManager" を見て pnpm を準備してくれる
RUN pnpm -v && pnpm install

## 4) 残りのソース
COPY . .

CMD ["node", "dist/index.js"]

ポイントはこれ👇

  • RUN corepack enable を入れて、コンテナ内でも shims が有効になるようにする 🧩 (nodejs.org)
  • pnpm -v を入れると、「ちゃんと固定バージョンが動いてる」確認が一発でできる ✅

5) よくある詰まりポイント集 😵‍💫➡️🧯

pnpm / yarn が見つからない

✅ ほぼこれ:corepack enable が未実行 Corepackは有効化が必要って明記されてるよ 🧩 (nodejs.org)


corepack enable が権限エラーで失敗する

Corepackは node の近くにshims(リンク/プロキシ)を作るので、配置場所が読み取り専用だと失敗することがあるよね 😭 Corepackのリポジトリでは、回避策として

  • --install-directory で別の場所に入れる
  • もしくはシェル/PowerShellで corepack pnpm を呼ぶ関数/aliasにする

みたいな方向が書かれてる 🛠️ (GitHub)


npm install -g yarn がうまくいかない

これは「Corepackのバイナリをnpmがうっかり上書きしないように」ブロックする挙動があるよ、ってNode側に説明がある 🧯 (nodejs.org) なので基本は「グローバルインストールで殴らず、Corepackに任せる」が安全 😄✨


❌ ネットに出られない環境で落ちる(CIなど)📡🚫

Corepackは、必要に応じてパッケージマネージャ本体をDLする設計だから、ネット不可だと詰まりやすい 😵‍💫 (nodejs.org) 対策として corepack pack で事前に固める「オフライン手順」が用意されてるよ 📦 (nodejs.org)


6) 🤖AI活用:Corepack固定を“最短で正しく”やるプロンプト集 🧠✨

(1) まず診断してもらう(貼り付けるだけ)🩺

以下の情報から、Corepackが効いていない原因を推理して、最短の修正手順を番号付きで出して。
- node -v の結果:
- corepack --version の結果:
- pnpm -v の結果:
- package.json の packageManager の有無:
- 実行したコマンドとエラーメッセージ(全文):

(2) package.json を安全に固定にする(差分で出して)🔧

この package.json に packageManager を追加して、pnpm を固定したい。
- 追加する行だけ最小差分で提案して(JSONの順序も崩さない)
- 追加後に実行すべきコマンドを3つまでに絞って

(3) DockerfileにCorepack固定を組み込む(キャッシュも意識)🐳⚡️

このDockerfileに Corepack enable と packageManager 固定を組み込みたい。
- キャッシュが効く順序で
- 変更点は差分形式で
- “なぜその順なのか”を1行コメントで入れて
(Dockerfileは以下:)
...貼る...

7) まとめチェックリスト ✅📌

  • corepack enable 済み(ローカル/コンテナ両方)🧩 (nodejs.org)
  • package.jsonpackageManager が入ってる 🔒 (nodejs.org)
  • pnpm -v / yarn -v が「プロジェクト指定のバージョン」になってる ✅
  • ネット制限があるなら corepack pack などオフライン策を用意 📦 (nodejs.org)

次の第12章は、ここで揃えた前提の上に RUN --mount=type=cache で“ダウンロード地獄”を潰すから、体感の伸びがめちゃ出るよ 🧠✨⚡️