重要说明:此文档适用于 Yarn 1(经典版)。
如需 Yarn 2+ 文档和迁移指南,请访问 yarnpkg.com。

依赖类型

依赖服务于许多不同的目的。某些依赖是构建项目所必需的,而另一些依赖则是在运行程序时必需的。因此,您可以使用的依赖类型有很多种(例如 dependenciesdevDependenciespeerDependencies)。

您的 package.json 将包含所有这些依赖项

{
  "name": "my-project",
  "dependencies": {
    "package-a": "^1.0.0"
  },
  "devDependencies": {
    "package-b": "^1.2.1"
  },
  "peerDependencies": {
    "package-c": "^2.5.4"
  },
  "optionalDependencies": {
    "package-d": "^3.1.0"
  }
}

大多数人只拥有 dependenciesdevDependencies,但了解每一个都很重要。

dependencies

这些是您的常规依赖项,或者更准确地说是在运行代码时需要的依赖项(例如 React 或 ImmutableJS)。

devDependencies

这些是您的开发依赖项。在开发工作流中的某个时间点需要的依赖项,但运行代码时不需要(例如 Babel 或 Flow)。

peerDependencies

对等依赖是一种特殊类型的依赖,只有在您发布自己的程序包时才会出现。

拥有对等依赖关系意味着您的程序包需要一个依赖项,该依赖项与安装您程序包的人完全相同。这对 react 等程序包很有用,这些程序包需要一个 react-dom 的副本,而安装它的人也会使用该副本。

optionalDependencies

可选依赖项恰好是:可选的。如果它们无法安装,Yarn 仍然会说安装过程成功。

这对于不一定适用于每台机器的依赖项非常有用,并且如果您未安装它们,您还有备选计划(例如 Watchman)。

bundledDependencies

发布程序包时将捆绑的程序包名称数组。

捆绑的依赖项应在您的项目中。其功能与常规依赖项基本相同。运行 yarn pack 时它们也将被压缩。

常规依赖项通常从 npm 注册表安装。在常规依赖项不足的情况下,捆绑依赖项非常有用

  • 当您想要重新使用不来自 npm 注册表或已被修改的第三方库时。
  • 当您想要将自己的项目重新用作模块时。
  • 当您想要使用模块分发一些文件时。