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>
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>
import CpuFlag from '../settings/_cpuFlag.mdx'
import OsFlag from '../settings/_osFlag.mdx'
import LibcFlag from '../settings/_libcFlag.mdx'