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>
138 lines
3.6 KiB
Markdown
138 lines
3.6 KiB
Markdown
---
|
|
id: add
|
|
title: "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](../package-sources.md) 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].
|
|
|
|
[catalog]: catalogs.md
|
|
|
|
### --config
|
|
|
|
Added in: v10.8.0
|
|
|
|
Save the dependency to [configDependencies](config-dependencies.md).
|
|
|
|
### --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](../global-packages.md) 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:
|
|
|
|
```sh
|
|
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:
|
|
|
|
```sh
|
|
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:
|
|
|
|
```sh
|
|
pnpm add --registry=https://registry.npmjs.org/ lodash
|
|
```
|
|
|
|
### --filter <package_selector\>
|
|
|
|
[Read more about filtering.](../filtering.md)
|
|
|
|
import CpuFlag from '../settings/_cpuFlag.mdx'
|
|
|
|
<CpuFlag />
|
|
|
|
import OsFlag from '../settings/_osFlag.mdx'
|
|
|
|
<OsFlag />
|
|
|
|
import LibcFlag from '../settings/_libcFlag.mdx'
|
|
|
|
<LibcFlag />
|