Vercelのビルド環境で特定のnpmバージョンを指定する2つの方法

Vercelのビルド環境で特定のnpmバージョンを指定する2つの方法

2025.11.04

リテールアプリ共創部のるおんです。

VercelでNext.jsアプリをデプロイする際に、 特定のnpmバージョン を使用したい場面がありました。今回は、Vercelのビルド環境で特定のnpmバージョンを指定する2つの方法を実際に試してみたので、その手順と結果をまとめます。

https://vercel.com/guides/how-do-i-use-the-latest-npm-version-for-my-vercel-deployment

先に結論

Vercelで特定のnpmバージョンを指定する方法は主に2つあります。

方法1: Install Commandのオーバーライド

  • Vercelダッシュボードの「Build & Development Settings」でInstall Commandをnpx npm@11.3.0 installなどに変更

方法2: Corepackの使用

  • 環境変数ENABLE_EXPERIMENTAL_COREPACK=1を設定
  • package.json"packageManager": "npm@11.3.0"を追加

今回は二つの方法を検証して紹介しますが、最終的に自分はpackage.jsonで管理できる方法2をプロジェクトに取り入れました。

前提・やりたいこと

  • Next.jsアプリをVercelでデプロイしている
  • 特定のnpmバージョン(今回はnpm 11.3.0)を使用したい
  • ビルド環境(CICD上)で確実に指定バージョンを使いたい

方法1: Install Commandのオーバーライド

手順

  1. Vercelダッシュボードにアクセスし、対象プロジェクトの Settings > General に移動
  2. Build & Development Settings セクションまでスクロール
  3. Install CommandOverride トグルを有効化
  4. コマンド入力欄に以下を入力して保存
npx npm@11.3.0 install

スクリーンショット 2025-11-04 18.37.09

動作確認

設定後、新しいデプロイを実行してビルドログを確認します。

ビルドログの例

Running build in Washington, D.C., USA (East) – iad1
Build machine configuration: 4 cores, 8 GB
Cloning github.com/ryuhei202/Hapio (Branch: feature/276-upgrade-nextjs-v16-enable-mcp-server, Commit: 7d0f261)
Skipping build cache, deployment was triggered without cache.
Cloning completed: 944.000ms
Running "vercel build"
Vercel CLI 48.8.2
+Running "install" command: `npx npm@11.3.0 install`...
+npm warn exec The following package was not found and will be installed: npm@11.3.0
added 971 packages, and audited 972 packages in 27s
206 packages are looking for funding
  run `npm fund` for details

スクリーンショット 2025-11-04 18.42.36

ビルドログで指定したnpmバージョンが使用されていることが確認できました。
また、今回の方法(npx npm@X.X.X install)を使用する場合、指定したnpmバージョンが初回ダウンロードされるため、通常のインストールより若干時間がかかります。実際に指定バージョンのnpmのインストールに約30秒(18:35:59 → 18:36:30) かかっている事がわかります。

メリット・デメリット

メリット

  • 設定が簡単で、すぐに適用可能
  • Vercelダッシュボードから直接変更できる

デメリット

  • Vercelダッシュボードでしか管理できない
  • コードリポジトリで管理されないため、変更履歴が追いにくく、チームメンバーが設定を把握しづらい
  • 指定npmバージョンのインストールに時間を要する

方法2: Corepackの使用

https://vercel.com/docs/builds/configure-a-build#corepack

Corepackは、Node.jsに同梱されているパッケージマネージャーのバージョン管理ツールです。Vercelでは実験的機能として利用可能です。

手順

① 環境変数の設定

Vercelダッシュボードで環境変数を追加します。

  1. Vercelダッシュボード > 対象プロジェクト > Settings > Environment Variables に移動
  2. 以下の環境変数を追加
Name Value
ENABLE_EXPERIMENTAL_COREPACK 1

スクリーンショット 2025-11-04 18.26.09

② package.jsonの編集

プロジェクトのルートにあるpackage.jsonpackageManagerフィールドを追加します。

package.json
{
	"name": "sample",
	"version": "0.1.0",
	"private": true,
+   "packageManager": "npm@11.3.0",
	"scripts": {
		"dev": "next dev --turbopack",
		"scan": "next dev --turbopack & npx react-scan@latest localhost:3001",
		"build": "next build",
		"start": "next start",
    ...
  }
}

packageManagerフィールドに使用したいnpmのバージョンを明示的に指定します。

③ 変更をコミット・プッシュ

git add package.json
git commit -m "feat: specify npm version using Corepack"
git push origin main

動作確認

プッシュ後、Vercelで自動的にデプロイが開始されます。ビルドログを確認してみましょう。

実際のビルドログ

Running build in Washington, D.C., USA (East) – iad1
Build machine configuration: 4 cores, 8 GB
Cloning github.com/ryuhei202/Hapio (Branch: feature/276-upgrade-nextjs-v16-enable-mcp-server, Commit: 7d0f261)
Cloning completed: 1.037s
Restored build cache from previous deployment (GKSxgwScWpPZZjzmMpYCx7bXmJ1C)
Running "vercel build"
Vercel CLI 48.8.2
+> Detected ENABLE_EXPERIMENTAL_COREPACK=1 and "npm@11.3.0" in package.json
Running "install" command: `npm install`...
added 78 packages, and audited 972 packages in 6s
206 packages are looking for funding
  run `npm fund` for details

スクリーンショット 2025-11-04 18.21.58

指定したnpm 11.3.0が正しく使用されていることが確認できました。また、①のnpxコマンドを使う方法とは違い、Corepackを使用するので指定したバージョンのnpmを使用するために別途時間がかかっていない事がわかります。

メリット・デメリット

メリット

  • package.jsonでバージョン管理できる
  • Gitで変更履歴を追跡可能で、コードレビューで変更を確認できる
  • チーム全体で同じバージョンを統一しやすい
  • ローカル環境でもCorepackを有効化すれば同じバージョンを使用可能
  • 指定したバージョンのnpmを使用するために別途時間がかからない

デメリット

  • 実験的機能のため、将来的に仕様が変わる可能性がある
  • 環境変数の設定が別途必要

おわりに

VercelのCI環境で特定のnpmバージョンを指定する2つの方法を紹介しました。

  • 方法1(Install Command): 手軽だが、ダッシュボードでしか管理できない。
  • 方法2(Corepack): package.jsonで管理でき、チーム開発に適している

用途に応じて選択できますが、長期的なメンテナンス性やチーム開発を考慮して、今回は自分はCorepackを使用しました。

以上、どなたかの参考になれば幸いです。

参考

https://vercel.com/guides/how-do-i-use-the-latest-npm-version-for-my-vercel-deployment

https://vercel.com/docs/builds/configure-a-build#corepack

この記事をシェアする

FacebookHatena blogX

関連記事