Files
Zoltan KochanandClaude Opus 5.5 c13953b3bc docs: label shell commands and title file snippets (#16699)
Code blocks that hold only shell commands now use the `sh` language,
and blocks showing a file's contents carry a `title` naming the file,
across the pnpm v12, pnpm v11, and pnpr docs. Bold file-name labels
above code blocks are folded into the titles.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 16:14:37 +02:00

3.6 KiB

id, title
id title
add pnpm add <pkg>

Installs a package and any packages that it depends on. By default, any new package is installed as a production dependency.

TL;DR

Command Meaning
pnpm add sax Save to dependencies
pnpm add -D sax Save to devDependencies
pnpm add -O sax Save to optionalDependencies
pnpm add -g sax Install package globally
pnpm add sax@next Install from the next tag
pnpm add sax@3.0.0 Specify version 3.0.0

Supported package sources

pnpm supports installing packages from various sources. See the Supported package sources page for detailed documentation on:

  • npm registry
  • JSR registry
  • Workspace packages
  • Local file system (tarballs and directories)
  • Remote tarballs
  • Git repositories (with semver, subdirectories, and more)

Options

--save-prod, -P, -p

Install the specified packages as regular dependencies.

--save-dev, -D, -d

Install the specified packages as devDependencies.

--save-optional, -O, -o

Install the specified packages as optionalDependencies.

--save-exact, -E, -e

Saved dependencies will be configured with an exact version rather than using pnpm's default semver range operator.

--save-peer

Using --save-peer will add one or more packages to peerDependencies and install them as dev dependencies.

--save-catalog

Added in: v10.12.1

Save the new dependency to the default catalog.

--save-catalog-name <catalog_name>

Added in: v10.12.1

Save the new dependency to the specified catalog.

--config

Added in: v10.8.0

Save the dependency to configDependencies.

--ignore-workspace-root-check

Adding a new dependency to the root workspace package fails, unless the --ignore-workspace-root-check or -w flag is used.

For instance, pnpm add debug -w.

--global, -g

Install a package globally. See Global Packages for details.

Each space-separated package is installed into its own isolated directory. To bundle several packages into a single isolated install (so they share dependencies and are removed together), pass them as a comma-separated list, e.g. pnpm add -g eslint,prettier.

--workspace

Only adds the new dependency if it is found in the workspace.

--allow-build

Added in: v10.4.0

A list of package names that are allowed to run postinstall scripts during installation.

Example:

pnpm --allow-build=esbuild add my-bundler

This will run esbuild's postinstall script and also add it to the allowBuilds field of pnpm-workspace.yaml. So, esbuild will always be allowed to run its scripts in the future.

Since v11.26.0, prefixing a name with ! denies the build instead:

pnpm add --allow-build=!core-js my-bundler

writes allowBuilds: { core-js: false }, so the package is never asked about again. Global installs (pnpm add -g) record the denial too.

--registry

Specify the registry to use for this installation:

pnpm add --registry=https://registry.npmjs.org/ lodash

--filter <package_selector>

Read more about filtering.

import CpuFlag from '../settings/_cpuFlag.mdx'

import OsFlag from '../settings/_osFlag.mdx'

import LibcFlag from '../settings/_libcFlag.mdx'