跳到主要内容
pnpm
文档目录

pnpm add <pkg>

查看英文原文 ↗

安装一个包以及它所依赖的任何包。默认情况下,任何新包都作为生产依赖安装。

TL;DR

CommandMeaning
pnpm add sax保存到 dependencies
pnpm add -D sax保存到 devDependencies
pnpm add -O sax保存到 optionalDependencies
pnpm add -g sax全局安装包
pnpm add sax@nextnext tag 安装
pnpm add sax@3.0.0指定版本 3.0.0

支持的包来源

pnpm 支持从各种来源安装包。详细文档见 Supported package sources 页面,内容包括:

  • npm registry
  • JSR registry
  • 工作区包
  • 本地文件系统(tarball 和目录)
  • 远程 tarball
  • Git 仓库(支持 semver、子目录等)

添加包管理器或运行时

自 v12.0.0-rc.6 起提供(仅 pnpm v12)

指明一个包管理器npmyarnbun)会记录项目所使用的管理器,而不是安装与之同名的 npm 包:

pnpm add yarn@4

写入 "packageManager": "yarn@4.18.0",其他每个包管理器都会作为范围记录在 devEngines.packageManager 中。指明一个运行时(nodedeno)会将其记录在 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.22pnpm add yarn@yarnpkg/berry),会按普通依赖安装它所指向的包。

选项

--save-prod, -P, -p

将指定的包作为普通 dependencies 安装。

--save-dev, -D, -d

将指定的包作为 devDependencies 安装。

--save-optional, -O, -o

将指定的包作为 optionalDependencies 安装。

--save-exact, -E, -e

保存的依赖将配置为精确版本,而不是使用 pnpm 默认的 semver 范围运算符。

--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

全局安装一个包。详情见 Global Packages

每个以空格分隔的包都会安装到各自独立的隔离目录。若要把多个包捆绑进一次隔离安装(使它们共享依赖并一起被移除),请将它们以逗号分隔的列表传入,例如 pnpm add -g eslint,prettier

--workspace

仅当在工作区中找到该新依赖时才添加。

--allow-build

自 v10.4.0 起提供

允许在安装期间运行 postinstall 脚本的包名列表。

Example:

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

这会运行 esbuild 的 postinstall 脚本,并将其加入 pnpm-workspace.yamlallowBuilds 字段。因此 esbuild 今后将始终被允许运行其脚本。

--filter <package_selector>

Read more about filtering.

--cpu=

自 v10.14.0 起提供

覆盖所安装原生模块的 CPU 架构。可接受的值与 package.jsoncpu 字段相同,后者来自 process.arch

--os=

自 v10.14.0 起提供

覆盖所安装原生模块的操作系统。可接受的值与 package.jsonos 字段相同,后者来自 process.platform

--libc=

自 v10.14.0 起提供

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

本页内容译自pnpm 官方文档(MIT License),如有出入以英文原文为准。