跳到主要内容

yarn add

向项目添加依赖项。

用法

$ yarn add ...

示例

向当前工作区添加常规包

yarn add lodash

向当前工作区添加特定版本的包

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

详细信息

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

  • 如果之前不存在,则包默认添加到常规 依赖项 字段,但此行为可以覆盖,这要归功于 -D,--dev 标志(它将导致依赖项被添加到 devDependencies 字段中)和 -P,--peer 标志(它将对 peerDependencies 执行相同操作)。

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

  • 如果设置,--prefer-dev 标志将作为更灵活的 -D,--dev 运行,因为它会将包添加到你的 devDependencies 中,如果它尚未在 dependenciesdevDependencies 中列出,但它也会很乐意升级你的 dependencies,如果你已经使用它(而 -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.0latestrc),Yarn 将按原样将此范围添加到结果 package.json 条目中(特别是,诸如rc之类的标签将按原样编码,而不是转换为 semver 范围)。

如果使用了--cached选项,Yarn 将优先重用项目中某个地方已使用的最高版本,即使是通过传递依赖项。

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

如果设置了--mode=<mode>选项,Yarn 将更改生成哪些工件。当前支持的模式是

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

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

有关所有受支持协议的汇编,请参阅我们网站上的专用页面:https://yarn.npmjs.net.cn/protocols

选项

定义说明

--json

将输出格式化为 NDJSON 流

-F,--fixed

按原样存储依赖项标签,而不是解析它们

-E,--exact

不要对已解析的范围使用任何 semver 修饰符

-T,--tilde

对已解析的范围使用~semver 修饰符

-C,--caret

对已解析的范围使用^semver 修饰符

-D,--dev

将包添加为开发依赖项

-P,--peer

将包添加为对等依赖项

-O,--optional

将包添加/升级为可选常规/对等依赖项

--prefer-dev

将包添加/升级为开发依赖项

-i,--interactive

在项目中从其他工作区重用指定的包

--cached

重用项目中某个位置已使用的最高版本

--mode #0

更改安装生成的内容