2. Types of dependencies(依赖的类型)
2.依赖类型
依赖关系服务于许多不同的目的。构建项目需要一些依赖关系,在运行程序时需要其他依赖项。因此你可以有许多不同类型的依赖关系(例如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注册表或修改过的第三方库时。
- 当你想重新使用自己的项目作为模块。
- 当你想分发你的模块的一些文件。