依赖类型
依赖服务于许多不同的目的。某些依赖是构建项目所必需的,而另一些依赖则是在运行程序时必需的。因此,您可以使用的依赖类型有很多种(例如 dependencies
、devDependencies
和 peerDependencies
)。
您的 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"
}
}
大多数人只拥有 dependencies
和 devDependencies
,但了解每一个都很重要。
dependencies
这些是您的常规依赖项,或者更准确地说是在运行代码时需要的依赖项(例如 React 或 ImmutableJS)。
devDependencies
这些是您的开发依赖项。在开发工作流中的某个时间点需要的依赖项,但运行代码时不需要(例如 Babel 或 Flow)。
peerDependencies
对等依赖是一种特殊类型的依赖,只有在您发布自己的程序包时才会出现。
拥有对等依赖关系意味着您的程序包需要一个依赖项,该依赖项与安装您程序包的人完全相同。这对 react
等程序包很有用,这些程序包需要一个 react-dom
的副本,而安装它的人也会使用该副本。
optionalDependencies
可选依赖项恰好是:可选的。如果它们无法安装,Yarn 仍然会说安装过程成功。
这对于不一定适用于每台机器的依赖项非常有用,并且如果您未安装它们,您还有备选计划(例如 Watchman)。
bundledDependencies
发布程序包时将捆绑的程序包名称数组。
捆绑的依赖项应在您的项目中。其功能与常规依赖项基本相同。运行 yarn pack
时它们也将被压缩。
常规依赖项通常从 npm 注册表安装。在常规依赖项不足的情况下,捆绑依赖项非常有用
- 当您想要重新使用不来自 npm 注册表或已被修改的第三方库时。
- 当您想要将自己的项目重新用作模块时。
- 当您想要使用模块分发一些文件时。