Skip to content
'; user_status_content.firstChild.appendChild(avatarContainer); } else { // Placeholder for LoggedOutUserMenu let loggedOutContainer = document.createElement('div'); // if LoggedOutUserMenu fallback let userBtn = document.createElement('button'); userBtn.style.width = "33px"; userBtn.style.height = "33px"; userBtn.style.display = "flex"; userBtn.style.alignItems = "center"; userBtn.style.justifyContent = "center"; userBtn.style.color = "var(--ds-gray-900)"; userBtn.style.border = "1px solid var(--ds-gray-300)"; userBtn.style.borderRadius = "100%"; userBtn.style.cursor = "pointer"; userBtn.style.background = "transparent"; userBtn.style.padding = "0"; // user icon ( from geist) let svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); svg.setAttribute('data-testid', 'geist-icon'); svg.setAttribute('height', '16'); svg.setAttribute('stroke-linejoin', 'round'); svg.setAttribute('style', 'color:currentColor'); svg.setAttribute('viewBox', '0 0 16 16'); svg.setAttribute('width', '16'); let path = document.createElementNS('http://www.w3.org/2000/svg', 'path'); path.setAttribute('fill-rule', 'evenodd'); path.setAttribute('clip-rule', 'evenodd'); path.setAttribute('d', 'M7.75 0C5.95507 0 4.5 1.45507 4.5 3.25V3.75C4.5 5.54493 5.95507 7 7.75 7H8.25C10.0449 7 11.5 5.54493 11.5 3.75V3.25C11.5 1.45507 10.0449 0 8.25 0H7.75ZM6 3.25C6 2.2835 6.7835 1.5 7.75 1.5H8.25C9.2165 1.5 10 2.2835 10 3.25V3.75C10 4.7165 9.2165 5.5 8.25 5.5H7.75C6.7835 5.5 6 4.7165 6 3.75V3.25ZM2.5 14.5V13.1709C3.31958 11.5377 4.99308 10.5 6.82945 10.5H9.17055C11.0069 10.5 12.6804 11.5377 13.5 13.1709V14.5H2.5ZM6.82945 9C4.35483 9 2.10604 10.4388 1.06903 12.6857L1 12.8353V13V15.25V16H1.75H14.25H15V15.25V13V12.8353L14.931 12.6857C13.894 10.4388 11.6452 9 9.17055 9H6.82945Z'); path.setAttribute('fill', 'currentColor'); svg.appendChild(path); userBtn.appendChild(svg); loggedOutContainer.appendChild(userBtn); loggedOutContainer.style.display = 'flex'; loggedOutContainer.style.gap = '8px'; loggedOutContainer.style.alignItems = 'center'; user_status_content.firstChild.appendChild(loggedOutContainer); } })();
Package Managers

Package Managers

Last updated March 17, 2026

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 ManagerLock FileInstall CommandSupported Versions
Yarnyarn.lockyarn install1, 2, 3
npmpackage-lock.jsonnpm install8, 9, 10
pnpmpnpm-lock.yamlpnpm install6, 7, 8, 9, 10
Bun 1bun.lockb or bun.lockbun install1
Vlt
Beta
vlt-lock.jsonvlt install0.x

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 ManagerConditionInstall CommandVersion Used
pnpmpnpm-lock.yaml: presentpnpm installVaries
lockfileVersion: 9.0-pnpm 9 or 10*
lockfileVersion: 7.0-pnpm 9
lockfileVersion: 6.0/6.1-pnpm 8
lockfileVersion: 5.3/5.4-pnpm 7
Otherwise-pnpm 6
npmpackage-lock.json: presentnpm installVaries
lockfileVersion: 2-npm 8
Node 20-npm 10
Node 22-npm 10
Bunbun.lockb: presentbun installBun <1.2
bun.lock: presentbun install --save-text-lockfileBun 1
bun.lock: presentbun installBun >=1.2
Yarnyarn.lock: presentyarn installYarn 1
Vltvlt-lock.json: presentvlt installVlt 0.x

pnpm-lock.yaml version 9.0 can be generated by pnpm 9 or 10. Newer projects will prefer 10, while older prefer 9. Check build logs to see which version is used for your project.

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:

  1. Navigate to your dashboard and select your project
  2. Open Settings in the sidebar and select General
  3. 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.

vercel.json
{
  "$schema": "https://openapi.vercel.sh/vercel.json",
  "installCommand": "pnpm install"
}

Was this helpful?

supported.