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:
范围协议。
从本地文件系统安装
有两种方式可以从本地文件系统安装:
- 从 tarball 文件(
.tar
、.tar.gz
或.tgz
) - 从目录
示例:
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.yaml
的 onlyBuiltDependencies
字段中。这样,esbuild
在将来就始终被允许运行其脚本。