跳到主要内容
版本:11.x

pnpm add <pkg>

安装软件包及其依赖的任何软件包。默认情况下,任何新软件包都被安装为生产依赖项。

摘要:​

命令含义
pnpm add sax保存到 dependencies
pnpm add -D sax保存到 devDependencies
pnpm add -O sax保存到 optionalDependencies
pnpm add -g sax 安装全局依赖
pnpm add sax@next安装 next 标签的版本
pnpm add sax@3.0.0指定 3.0.0 版本

支持的软件包来源​

pnpm 支持从各种来源安装软件包。请参阅 支持的软件包源 页面了解详细文档:

  • npm 源
  • JSR 源
  • 工作区包
  • 本地文件系统 (tarballs和目录)
  • 远程 tarball
  • Git 仓库(包含语义化版本控制、子目录等)

添加包管理器或运行时​

新增于:v12.0.0-rc.6(仅限 pnpm v12)

指定一个 包管理器(如 npm、yarn 或 bun)会记录项目所使用的管理器,而不是去安装同名的 npm 包:

pnpm add yarn@4

写入"packageManager": "yarn@4.18.0", 并且所有其他包管理器都会在[devEngines.packageManager`](../package_json.md#devenginespackagemanager)中记录为一个范围。命名运行时(node、deno)会将其记录在 engines.runtime 下,就像显式的 node@runtime:22 拼写已经做到的那样——bun 既是运行时又是包管理器,除非你请求运行时(pnpm add bun@runtime:1.3.0),否则它会被声明为项目的包管理器。

在全局范围内,pnpm add -g yarn 会安装当前的 Yarn 版本,而不是仅包含 Classic 版本的 yarn 包;同样,pnpm add -g node@22 会直接安装该 Node.js 版本,而不是安装一个负责下载该版本的包装程序。

一个定位到软件包而不是要求一个已发布版本的标识符——例如 pnpm add yarn@npm:yarn@1.22.22 或 pnpm add yarn@yarnpkg/berry——那么 pnpm 会将该标识符所指定的包作为普通依赖项进行安装。

配置项​

--save-prod, -P, -p​

将指定的依赖安装为常规的 dependencies。

--save-dev, -D, -d​

将指定的依赖安装为 devDependencies。

--save-optional, -O, -o​

将指定的依赖安装为 optionalDependencies。

--save-exact, -E, -e​

已保存的依赖项将被配置确切版本,而不是使用 pnpm 的默认语义化版本范围运算符。

--save-peer​

使用 --save-peer 会把依赖安装为开发依赖,并添加到 peerDependencies 中。

--save-catalog​

添加于:v10.12.1

将新依赖项保存到默认的目录(catalog)。

--save-catalog-name <catalog_name>​

添加于:v10.12.1

将新的依赖项保存到指定的目录(catalog)。

--config​

添加于:v10.8.0

将依赖项保存到 configDependencies。

--ignore-workspace-root-check​

除非使用 --ignore-workspace-root-check 或 -W 标记. 否则在在工作空间根目录下添加依赖项时会失败。

例如:pnpm add debug -w.

--global, -g​

全局安装软件包。有关详细信息,请参阅 全局包。

每个以空格分隔的软件包均安装到其各自独立的目录中。若要将多个包捆绑为单个隔离的安装(使其共享依赖并能被同时移除),请以逗号分隔的形式传入这些包,例如 pnpm add -g eslint,prettier。

--workspace​

仅添加在工作空间中找到的依赖项。

--allow-build​

添加于:v10.4.0

允许在安装期间执行安装的包名列表。

示例:

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

这将运行 esbuild 的 postinstall 脚本,并将其添加到 pnpm-workspace.yaml 的 allowBuilds 字段中。因此, esbuild 将来将始终被允许运行其脚本。

--filter <package_selector>​

阅读更多有关过滤的内容。

--cpu=​

添加于:v10.14.0

覆盖要安装的本机模块的 CPU 架构。可接受的值与 package.json 中的 cpu 字段相同,这个字段来自 process.arch。

--os=<name>​

添加于:v10.14.0

覆盖本机的 OS 原生安装。可接受的值与 package.json 中的 os 字段相同,这个字段来自 process.platform。

--libc=<name>​

添加于:v10.14.0

覆盖要安装的原生模块的 libc。可接受的值与 package.json 中的 libc 字段相同。