乐趣区

关于yarn:Yarn依赖与版本

本节咱们来讲 Yarn 中的依赖与版本。软件包依赖关系对于包的胜利是至关重要的,当开发软件包时,咱们可能会用到其余包里的现有代码来开发本人的软件包性能,那么其余包就能够称为我的项目的依赖项。

所有的我的项目依赖都在 package.json 文件中申明,每个依赖项都须要指名依赖名称和最低版本信息。而 yarn.lock 文件里保留了每个依赖的装置版本,来确保软件包在所有装置过程中保持一致。

依赖的类型

不同的依赖有着不同的目标,在构建我的项目时须要一些依赖项,在运行程序时也须要一些依赖项,因为有不同的依赖类型。

对于 package.json 文件能够蕴含的一些依赖类型如下所示:

{
    "name": "my_yarn",
    "dependencies": {"package-a": "^1.1.0"},
    "devDependencies": {"package-b": "^1.2.1"},
    "peerDependencies": {"package-c": "^2.5.4"},
    "optionalDependencies": {"package-d": "^3.1.0"}
}
  • dependencies:惯例依赖,也就是运行代码时所需的依赖项。
  • devDependencies:开发依赖,在开发工作流中某些时候须要的依赖关系,而在运行代码时则不须要。
  • peerDependencies:伙伴依赖,一种非凡类型的依赖项,只有在公布本人的程序包时才会呈现。
  • optionalDependencies:可选依赖,这种依赖即使装置失败,Yarn 也会认为整个依赖装置过程是胜利的。
  • bundledDependencies:打包依赖,在公布包时,这个数组里的包都将会被打包(bundle)。

依赖的版本

Yarn 的软件包恪守语义版本控制,也叫作“semver”,也就是说当咱们从资源库装置一个新包,它会和语义版本范畴一起被增加到咱们的 package.json 文件中。

版本号能够划分为 主版本号. 次版本号. 订正号,相似于 1.0.0、1.1.2,不同的状况对应不同的版本号增长,如下所示:

  • 主版本号:新的版本不兼容老版本的 API。
  • 次版本号:新的版本新增了局部性能并向下兼容。
  • 订正号:新的版本修复局部 bug 并向下兼容。

有些时候,除了版本号当前还会呈现一些特殊字符,例如 >=,<,^ 和 ~,这些是运算符,能够用来指定版本范畴。版本范畴的用途是表明依赖的哪个版本会在代码中起作用。举个例子,像 >2.1.0 示意大于 2.1.0 版本、=4.3.1 示意等于 4.3.1 版本。如果不指定运算符,则示意等于某个版本。

选择性依赖项解决

Yarn 反对选择性版本解析,package.json 文件里的 resolutions 字段用于解析选择性版本,能够通过此性能自定义依赖版本。这通常须要在 yarn.lock 文件中进行手动编辑。

示例:

在 package.json 文件中增加一个 resolutions 字段用于笼罩版本定义:

{
  "name": "project_name",
  "version": "1.0.0",
  "dependencies": {
    "left-pad": "1.0.0",
    "c": "file:../c-1",
    "d2": "file:../d2-1"
  },
  "resolutions": {
    "d2/left-pad": "1.1.1",
    "c/**/left-pad": "1.1.2"
  }
}

而后运行 yarn install 命令即可。

留神如果是上面几种状况,会呈现正告:

  • 定义了有效的版本解析规定,例如错写了有效的包名。
  • 定义的版本解析的版本号、版本范畴有效。
  • 定义的版本解析规定的版本号、版本范畴与原始版本范畴不兼容。
退出移动版