Skip to main content
Version: 11 & 12

pnpm login

Added in: v11.0.0

Aliases: adduser

Authenticate with an npm registry.

pnpm login [--registry <url>] [--scope <scope>]

Supports web-based login with QR code as well as classic username/password authentication.

Since v11.19.0, web-based login no longer requires an interactive terminal: without a TTY, pnpm login prints the authentication URL (skipping the QR code and the prompt to open the URL in a browser) and polls the registry until the browser approval completes. Only the classic username/password login still fails with ERR_PNPM_LOGIN_NON_INTERACTIVE in a non-interactive terminal.

In pnpm 12.1 and newer, the granted token is written to the global config.yaml, under the structured _auth setting. When --scope is present, the same write routes that scope to the registry under the global registries setting. pnpm 11.25 writes the token and scoped route to <pnpm config>/auth.ini; pnpm 12.1 continues to read tokens written there.

Options

--registry <url>

The registry to authenticate with. Defaults to the configured default registry.

--scope <scope>

Associate the credentials with the specified scope. The registry for that scope will be used.

Since v11.25.0 and v12.1.0, a scope setting in a project's pnpm-workspace.yaml is ignored with a warning. A repository must not be able to choose the machine-wide route a later login writes. Pass --scope, set PNPM_CONFIG_SCOPE, or set the machine's default with:

pnpm config set --global scope @acme