返回顶部
本页目录

yarn add

向项目添加依赖项

语法

                            
  • yarn add ...

实例

在当前工作区添加包

                            
  • yarn add lodash

将一个软件包的特定版本添加到当前工作区

                            
  • yarn add lodash@1.2.3

使用URL将GitHub仓库(主分支)中的一个包添加到当前工作区

                            
  • yarn add lodash@https://github.com/lodash/lodash

使用GitHub协议从GitHub仓库(主分支)添加一个包到当前工作区

                            
  • yarn add lodash@github:lodash/lodash

使用GitHub协议(速记)从GitHub仓库(主分支)添加一个包到当前工作区

                            
  • yarn add lodash@lodash/lodash

使用GitHub协议(速记)将一个GitHub仓库的特定分支的软件包添加到当前工作区

                            
  • yarn add lodash-es@lodash/lodash#es

选项

--json
输出格式化 NDJSON 流
-F,--fixed
按原样存储依赖项标签而不是解析它们
-E,--exact
不要在解析范围内使用任何 semver 修饰符
-T,--tilde
在解析范围上使用 ~ semver 修饰符
-C,--caret
在解析范围上使用 ^ semver 修饰符
-D,--dev
在 devDependencies 上添加依赖项
-P,--peer
在 peerDependencies 上添加依赖项
-O,--optional
添加/升级一个软件包为可选的常规/同行依赖关系
--prefer-dev
添加/升级一个依赖项到 devDependencies 中
-i,--interactive
从项目中的其他工作区重复使用指定的包
--cached
重复使用项目中某处已经使用的最高版本
--mode #0
更改安装生成的工件

细节

此命令将一个包添加到最近工作区的 package.json 中。

  • 如果它之前不存在,默认情况下包将被添加到常规 dependencies 字段,但由于标志 -D,--dev(这将导致依赖项被添加到该 devDependencies 字段)和 -P,--peer 标志(这将做同样的事情,但对于peerDependencies)。

  • 如果该包已经在您的依赖项中列出,则默认情况下它将被升级,无论它是您的dependencies还是的一部分devDependencies(但它永远不会更新peerDependencies)。

  • 如果设置,该 --prefer-dev标志将作为一个更灵活的操作,如果它尚未在 or 中列出,-D,--dev它将添加到您的包中,但如果您已经使用它,它也会愉快地升级您的包(而 会抛出异常).devDependenciesdependenciesdevDependenciesdependencies-D,--dev

  • 如果设置,该 -O,--optional 标志会将包添加到该 optionalDependencies 字段,并与该标志结合 -P,--peer,它将包添加为可选的对等依赖项。如果包已经在您的列表中列出 dependencies,它将升级为 optionalDependencies. 如果包已经在你的 中列出 peerDependencies,结合标志 -P,--peer,它将升级为可选的对等依赖项:"peerDependenciesMeta": { "<package>": { "optional": true } }

  • 如果添加的包根本没有指定范围,则其latest标签将被解析,返回的版本将用于生成新的 semver 范围(^默认使用修饰符,除非通过 defaultSemverRangePrefix 配置另行配置,或者 指定~修饰符,或者如果指定 -T,--tilde 则根本没有修饰符. -E,--exact 此规则有两个例外:第一个是如果包是工作区,则将使用其本地版本,第二个是如果您使用默认范围,则根本不会 -P,--peer 解析*

  • 如果添加的包指定了一个范围(例如^1.0.0,latestrc),Yarn 将按原样在生成的 package.json 条目中添加此范围(特别是,标签将按原样rc编码而不是转换为 semver范围)。

如果--cached使用该选项,Yarn 将优先重用已在项目某处使用的最高版本,即使是通过传递依赖。

如果-i,--interactive使用该选项(或者如果preferInteractive设置已打开),该命令将首先尝试检查项目中的其他工作区是否使用指定的包,如果是,将提供重用它们。

如果 --mode=<mode> 设置了该选项,Yarn 将更改生成的工件。目前支持的模式有:

  • skip-build 根本不会运行构建脚本。请注意,这与设置为 false 不同 enableScripts,因为后者将禁用构建脚本,从而影响磁盘上生成的工件的内容,而前者只会禁用构建步骤 - 但不会禁用脚本本身,这不会跑步。

  • update-lockfile 将完全跳过链接步骤,只获取锁定文件中缺少的包(或没有相关校验和的包)。此模式通常由 Renovate 或 Dependabot 等工具使用,以使锁定文件保持最新,而不会产生全部安装成本。