テック技報最新号へ →
インフラ

Workers Builds: package.json の packageManager で npm のバージョンを固定する

@CFchangelog · 投稿 2026-10-23
#infra#cloudflare#workers#workers-builds#ci#npm

Workers Builds(Cloudflare の Git 連携ビルド)が、依存のインストール前に packageManager で指定した npm を入れてから npm install するようになった(2026-10-23)。手元の新しい npm で作った lockfile が、ビルド環境の古い npm で解釈されて差分が出る問題を防げる。

いつ使うか

  • ローカルではビルドできるのに、Workers Builds だけ npm ci が lockfile 不一致で落ちる・依存の解決結果が違う
  • チームや CI とローカルで npm のメジャーバージョンがずれている
  • Yarn / pnpm / Bun を使っていて、そのバージョンもビルドで揃えたい

設定

package.json に正確なバージョンで書く。

json
{
  "packageManager": "[email protected]"
}
  • 同じフィールドで Yarn・pnpm・Bun のバージョンも指定できる(例: "[email protected]" のように正確な版)
  • 手元の npm に合わせるなら npm -v の結果をそのまま書く。Corepack を使っている環境ではローカルもこの値に従う

注意点

  • 範囲指定は不可: npm@^11 のような書き方ではなく [email protected] のように正確な版を書く
  • engines.npm は見ない: Workers Builds はバージョン選択に engines.npm を使わない。engines だけ書いていても固定されないので packageManager を足す
  • 固定した版は自分で上げない限りそのまま。npm を上げたら lockfile の再生成とあわせて packageManager も更新する
  • 他のビルドツール(Renovate など)が packageManager を自動更新する設定になっていないかも確認しておく

関連

出典

X の元の投稿を開く