跳到主要内容
版本:Next

pnpm add <pkg>

安装指定的包及其所依赖的所有包。 默认情况下,新安装的包会被添加为生产依赖(production dependency)。

快速上手

命令含义
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

支持的包位置

从 npm 注册表安装

默认情况下,pnpm add package-name 将从 npm registry 安装最新版本的 package-name

如果在工作空间中执行,该命令会首先检查工作空间中的其他项目是否使用了指定的包。如果是,将会安装已经使用的版本范围。

你也可以通过以下方式安装包:

  • 标签:pnpm add express@nightly
  • 版本:pnpm add express@1.0.0
  • 版本范围:pnpm add express@2 react@">=0.1.0 <0.2.0"

从 JSR 注册表安装

加入版本:v10.9.0

要从 JSR 注册表安装包,请使用 jsr: 协议前缀:

pnpm add jsr:@hono/hono
pnpm add jsr:@hono/hono@4
pnpm add jsr:@hono/hono@latest

这和从 npm 安装的方式类似,只是告诉 pnpm 通过 JSR 来解析包。

从工作空间安装

注意,在工作空间中添加依赖时,包的安装来源取决于配置的来源,这取决于是否设置了 link-workspace-packages 以及是否使用了 workspace: 范围协议

从本地文件系统安装

有两种方式可以从本地文件系统安装:

  1. 从 tarball 文件(.tar.tar.gz.tgz
  2. 从目录

示例:

pnpm add ./package.tar.gz
pnpm add ./some-directory

当你从目录安装时,会在当前项目的 node_modules 中创建一个符号链接,这与运行 pnpm link 的效果相同。

从远程 tarball 安装

参数必须是以 "http://" 或 "https://" 开头的可获取 URL。

示例:

pnpm add https://github.com/indexzero/forever/tarball/v0.5.6

从 Git 仓库安装

pnpm add <git remote url>

通过 Git 克隆的方式,从托管的 Git 提供商安装包。

你可以通过以下方式从 Git 安装包:

  • 默认分支的最新提交:
pnpm add kevva/is-positive
  • Git 提交哈希:
pnpm add kevva/is-positive#97edff6f525f192a3f83cea1944765f769ae2678
  • Git 分支:
pnpm add kevva/is-positive#master
  • Git refs 相对的分支:
pnpm add zkochan/is-negative#heads/canary
  • Git 标签:
pnpm add zkochan/is-negative#2.0.1
  • 带 V 前缀的 Git 标签:
pnpm add andreineculau/npm-publish-git#v0.0.7

使用语义化版本从 Git 仓库安装

你可以使用 semver: 参数来指定要安装的版本(范围)。例如:

  • 严格的语义化版本:
pnpm add zkochan/is-negative#semver:1.0.0
  • 带 V 前缀的严格语义化版本:
pnpm add andreineculau/npm-publish-git#semver:v0.0.7
  • 语义化版本范围:
pnpm add kevva/is-positive#semver:^2.0.0
  • 带 V 前缀的语义化版本范围:
pnpm add andreineculau/npm-publish-git#semver:<=v0.0.7

从 Git 仓库的子目录安装

你也可以使用 path: 参数从 Git 托管的 monorepo 中安装特定的子目录。例如:

pnpm add RexSkz/test-git-subdir-fetch#path:/packages/simple-react-app

通过完整 URL 从 Git 仓库安装

如果你想更明确地指定或使用其他 Git 托管服务,你可能需要写出完整的 Git URL:

# git+ssh
pnpm add git+ssh://git@github.com:zkochan/is-negative.git#2.0.1

# https
pnpm add https://github.com/zkochan/is-negative.git#2.0.1

使用托管服务提供商简写从 Git 仓库安装

你可以为某些 Git 提供商使用协议简写 [provider]:

pnpm add github:zkochan/is-negative
pnpm add bitbucket:pnpmjs/git-resolver
pnpm add gitlab:pnpm/git-resolver

如果省略 [provider]:,默认为 github:

组合不同参数从 Git 仓库安装

可以使用 & 分隔符组合多个参数。这在处理 monorepo 的分支时特别有用:

pnpm add RexSkz/test-git-subdir-fetch.git#beta\&path:/packages/simple-react-app

beta 分支安装 /packages/simple-react-app 子目录中的内容。

选项

--save-prod, -P

将指定的包安装为常规 dependencies

--save-dev, -D

将指定的包安装为 devDependencies

--save-optional, -O

将指定的包安装为 optionalDependencies

--save-exact, -E

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

--save-peer

使用 --save-peer 会将一个或多个包添加到 peerDependencies 中,并将它们作为开发依赖项安装。

--config

加入版本:v10.8.0

将依赖保存到 configDependencies

--ignore-workspace-root-check

向根工作空间包添加新依赖项会失败,除非使用 --ignore-workspace-root-check-w 标志。

例如:pnpm add debug -w

--global, -g

全局安装包。

--workspace

仅当在工作空间中找到新依赖项时才添加它。

--allow-build

加入版本:v10.4.0

允许在安装过程中运行 postinstall 脚本的包名列表。

示例:

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

这将运行 esbuild 的 postinstall 脚本,并将其添加到 pnpm-workspace.yamlonlyBuiltDependencies 字段中。这样,esbuild 在将来就始终被允许运行其脚本。

--filter <package_selector>

阅读更多关于过滤的信息。