Package Managers
Discover the package managers supported by Vercel for dependency management. Learn how Vercel detects and uses npm, Yarn, pnpm, and Bun for optimal build performance.Vercel will automatically detect the package manager used in your project and install the dependencies when you create a deployment. It does this by looking at the lock file in your project and inferring the correct package manager to use.
If you are using Corepack, Vercel will use the package manager specified in the package.json
file's packageManager
field instead.
The following table lists the package managers supported by Vercel, with their install commands and versions:
Package Manager | Lock File | Install Command | Supported Versions |
---|---|---|---|
Yarn | yarn.lock | yarn install | 1 |
npm | package-lock.json | npm install | 8, 9, 10 |
pnpm | pnpm-lock.yaml | pnpm install | 6, 7, 8, 9 |
Bun 1 Beta | bun.lockb | bun install | 1 |
While Vercel automatically selects the package manager based on the lock file present in your project, the specific version of that package manager is determined by the version information in the lock file or associated configuration files.
The npm and pnpm package managers create a lockfileVersion
property when they generate a lock file. This property specifies the lock file's format version, ensuring proper processing and compatibility. For example, a pnpm-lock.yaml
file with lockfileVersion: 9.0
will be interpreted by pnpm 9, while a pnpm-lock.yaml
file with lockfileVersion: 5.4
will be interpreted by pnpm 7.
Package Manager | Condition | Install Command | Version Used |
---|---|---|---|
pnpm | pnpm-lock.yaml : present | pnpm install | Varies |
lockfileVersion : 9.0 | - | pnpm 9 | |
lockfileVersion : 6.0/6.1 | - | pnpm 8 | |
lockfileVersion : 5.3/5.4 | - | pnpm 7 | |
Otherwise | - | pnpm 6 | |
npm | package-lock.json : present | npm install | Varies |
lockfileVersion : 2 | - | npm 8 | |
Node 16 | - | npm 8 | |
Node 18 | - | npm 10 | |
Node 20 | - | npm 10 | |
Bun | bun.lockb : present | bun install | Bun 1 |
Yarn | yarn.lock : present | yarn install | Yarn 1 |
When no lock file exists, Vercel uses npm by default. Npm's default version aligns with the Node.js version as described in the table above. Defaults can be overridden using installCommand
or Corepack for specific package manager versions.
You can manually specify a package manager to use on a per-project, or per-deployment basis.
To specify a package manager for all deployments in your project, use the Override setting in your project's Build & Development Settings:
- Navigate to your dashboard and select your project
- Select the Settings tab
- From the left navigation, select General
- Enable the Override toggle in the Build & Development Settings section and add your install command. Once you save, it will be applied on your next deployment
When using an override install command like
pnpm install
, Vercel will use the oldest version of the
specified package manager available in the build container. For example, if you
specify pnpm install
as your override install command,
Vercel will use pnpm 6.
To specify a package manager for a deployment, use the installCommand
property in your projects vercel.json
.
{
"installCommand": "pnpm install"
}
Was this helpful?