pnpm add <pkg>

Installa un pacchetto e gli eventuali pacchetti da cui dipende. Per impostazione predefinita, qualsiasi nuovo pacchetto è installato come dipendenza di produzione.

TL;DR#

ComandoSignificato
pnpm add saxSalva in dependencies
pnpm add -D saxSalva in devDependencies
pnpm add -O saxSalva in optionalDependencies
pnpm add -g saxInstalla il pacchetto a livello globale
pnpm add sax@nextInstalla dal tag next
pnpm add sax@3.0.0Specifica la versione 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)

Adding a package manager or a runtime#

Added in: v12.0.0-rc.6 (pnpm v12 only)

Naming a package manager — npm, yarn or bun — records which one the project uses instead of installing the npm package that shares the name:

pnpm add yarn@4

writes "packageManager": "yarn@4.18.0", and every other package manager is recorded as a range in devEngines.packageManager. Naming a runtime (node, deno) records it under engines.runtime, as the explicit node@runtime:22 spelling already did — bun is both, and is declared as the project's package manager unless you ask for the runtime (pnpm add bun@runtime:1.3.0).

Globally, pnpm add -g yarn installs the current Yarn line rather than the Classic-only yarn package, and pnpm add -g node@22 installs that Node.js release rather than a wrapper that downloads one.

A specifier that locates a package rather than asking for a released version — pnpm add yarn@npm:yarn@1.22.22, pnpm add yarn@yarnpkg/berry — installs what it names, as an ordinary dependency.

Opzioni#

--save-prod, -P, -p#

Installa i pacchetti specificati come dipendenze normali (dependencies).

--save-dev, -D, -d#

Installa i pacchetti specificati come dipendenze di sviluppo (devDependencies).

--save-optional, -O, -o#

Installa i pacchetti specificati come dipendenze facoltative (optionalDependencies).

--save-exact, -E, -e#

Le dipendenze salvate verranno configurate con una versione esatta invece di usare l'operatore dell'intervallo semver predefinito di pnpm.

--save-peer#

L'uso di --save-peer, aggiungerà uno o più pacchetti a peerDependencies e li installerà come 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#

L'aggiunta di una dipendenza alla radice del workspace fallisce, a meno che non venga utilizzato il flag --ignore-workspace-root-check o -w.

Ad esempio, 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#

Aggiunge la nuova dipendenza solo se si trova all'interno di un workspace.

--allow-build#

Added in: v10.4.0

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

Esempio:

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.

--filter <selettore_pacchetto>#

Ulteriori informazioni sui filtri.

--cpu=<name>#

Added in: v10.14.0

Override CPU architecture of native modules to install. Acceptable values are same as cpu field of package.json, which comes from process.arch.

--os=<name>#

Added in: v10.14.0

Override OS of native modules to install. Acceptable values are same as os field of package.json, which comes from process.platform.

--libc=<name>#

Added in: v10.14.0

Override libc of native modules to install. Acceptable values are same as libc field of package.json.