zoukankan      html  css  js  c++  java
  • 依赖的版本

    清晰使用的语义化版本的介绍,特别建议阅读下最后的关于 ^ 修饰符的版本介绍,可能大部分人的理解都是错的......

    语义化版本

    Yarn 里的包遵守 语义化版本,也叫 “semver”。 当你从资源库安装一个新包,它会和语义版本范围一起被添加到你的 package.json。

    版本号可以划分为 主版本号.次版本号.修订号,类似这些: 3.14.1、 0.42.0、 2.7.18。 不同的情况对应不同的版本号增长:

    • 主版本号:新的版本不兼容老版本的 API
    • 次版本号:新的版本新增了部分功能,并向下兼容
    • 修订号:新的版本修复了部分bug,并向下兼容

    注意: 有时语义版本也会包含一些“标签”或者“扩展”,用于标记预发布版本或者测试版本,比如 2.0.0-beta.3

    版本范围

    请在 package.json 文件里同时使用依赖名称和其版本范围来指明所需要的依赖:

    {
      "dependencies": {
        "package-1": ">=2.0.0 <3.1.4",
        "package-2": "^0.4.2",
        "package-3": "~2.7.1"
      }
    }

    你一定注意到了除版本号外的那些特殊字符。 这些字符有 >=,<,^和~,它们是运算符,用来指定版本范围。

    版本范围的用处是标明依赖的哪个版本会在代码中起作用。

    比较器

    每个版本范围组成 比较器。这些比较器是简单 运算符 后面跟着一个 版本号。以下是一些基本的运算符:

    比较器 描述
    <2.0.0 任何小于2.0.0的版本
     <=3.1.4 任何小于或等于3.1.4的版本 
     >0.4.2 任何大于0.4.2的版本 
     >=2.7.1 任何大于或等于2.7.1的版本 
     =4.6.6 任何等于4.6.6的版本 

    注意:如果没有明确指定运算符,那么版本范围默认为 =,也就是说 = 是可选的。

    交集 

    用空格连接若干比较器可以创建 比较器集合。 最终版本范围是它包含的比较器的交集。 例如,比较器集合 >=2.0.0 <3.1.4 表示“大于或等于 2.0.0 并小于 3.1.4”。

    并集

    完整的版本范围可以包含多个用 || 连接的比较器集合的并集。 如果并集的任何一边满足条件,整个版本范围就满足条件。 例如,版本范围 <2.0.0 || >3.1.4 意味着“小于 2.0.0 或者大于 3.1.4”。 

    预发布标签

    版本号也可以包含预发布标签(比如 3.1.4-beta.2)。 如果一个比较器包含有预发布标签的版本,它将只匹配有相同 major.minor.patch 的版本。 

    例如,版本范围 >=3.1.4-beta.2 将匹配 3.1.4-beta.2 或 3.1.4-beta.12,但不会匹配 3.1.5-beta.1,即使在理论上 3.1.5-beta.1版本 “大于或等于” (>=) 3.1.4-beta.2 版本。

    预发布版本通常包含一些不兼容的修改,而且通常你也不会愿意匹配到指定版本之外的预发布版本,所以上述匹配规则很有用。

    版本范围进阶

    连字符范围

    连字符范围(例如 2.0.0 - 3.1.4)标明了一个包含集合。数字 0 会被用来填充版本号中缺少的那些部分(例如 0.4 或 2)。

    版本范围 扩展的版本范围
    2.0.0 - 3.1.4 >=2.0.0 <=3.1.4
    0.4 - 2 >=0.4.0 <=2.0.0

    X范围

    字符 X、x 或者 * 都可以作为通配符,用于填充部分或全部版本号。

    版本范围 扩展的版本范围
    * >=0.0.0(任意版本)
    2.x >=2.0.0 <3.0.0(匹配主要版本)
    3.1.x >=3.1.0 <3.2.0(匹配主要和次要版本)

    被省略的那部分版本号默认为 x 范围。

    版本范围 扩展的版本范围
    ``(empty string) * 或 >=0.0.0
    2 2.x.x 或 >=2.0.0 < 3.0.0
    3.1 3.1.x 或 >=3.1.0 < 3.2.0

    ~ 字符范围

    同时使用字符 ~ 和次版本号,表明允许修订号变更。同时使用字符 ~ 和主版本号,表明允许次版本号变更。

    版本范围 扩展的版本范围
    ~3.1.4 >=3.1.4 <3.2.0
    ~3.1 3.1.x 或 >=3.1.0 <3.2.0 
    ~3 3.x 或 >=3.0.0 < 4.0.0

    注意︰在波浪号范围中指定预发布版本将只匹配和它完整版本号相同的预发布版本。 例如,版本范围 ~3.1.4-beta.2 会匹配 3.1.4-beta.4 但不匹配 3.1.5-beta.2,因为 major.minor.patch 版本不同。

    ^ 字符范围

    字符 ^ 表明不会修改版本号中的第一个非零数字,3.1.4 里的 3 或者 0.4.2 里的 4。

    版本范围 扩展的范围版本
    ^3.1.4 >=3.1.4 <4.0.0
    ^0.4.2 >=0.4.2 <0.5.0
    ^0.0.2 >=0.0.2 <0.0.3

    版本号中缺少的部分将被 0 填充,且在匹配时这些位置允许改变。

    版本范围 扩展的版本范围
    ^0.0.x >=0.0.0 <0.1.0
    ^0.0 >=0.0.0 <0.1.0
    ^0.x >=0.0.0 <1.0.0
    ^0 >=0.0.0 <1.0.0

    引用自 https://yarnpkg.com/zh-Hans/docs/dependency-versions

  • 相关阅读:
    C++入门经典-例4.9-输出不同生命周期的变量值
    C++入门经典-例4.8-同名的全局变量和局部变量
    C++入门经典-例4.7-变量的作用域
    C++入门经典-例4.6-使用重载函数
    C++入门经典-例4.5-利用循环求n的阶乘
    C++入门经典-例4.4-循环嵌套之求n的阶乘
    C++入门经典-例4.3-函数的递归调用之汉诺塔问题
    C++入门经典-例4.2-调用默认参数的函数
    C++入门经典-例4.1-声明、定义和使用函数
    C++入门经典-例3.25-使用循环输出闰年
  • 原文地址:https://www.cnblogs.com/philipding/p/9963119.html
Copyright © 2011-2022 走看看