版本命名及限定規則詳解

理解版本命名及限定規則

前言:講解版本命名和版本限定的相關知識html


版本命名規則

咱們常見的版本命名格式爲前端

[name].x.y.z-[state]
  • name爲可選字段,通常爲 v,表示 version
  • x.y.z 爲各版本的序號,遵循 語義化版本命名規範
    實際上基於此規範,不該該在版本前出現 name 字段.
  • state 可選字段,表示版本狀態,例如 b 表示 beta 測試版,其餘常見狀態,後有詳述

語義化版本命名規則

該規則對版本的迭代命名,作了很好的限制.
核心規則以下.npm

序號 格式要求 說明
x 非負整數 主版本號(major),進行不向下兼容的修改時,遞增主版本號
y 非負整數 次版本號(minor),保持向下兼容,新增特性時,遞增次版本號
z 非負整數 修訂號(patch),保持向下兼容,修復問題但不影響特性時,遞增修訂號
  • 0.y.z 表示開發階段,一切可能隨時改變,非穩定版。
  • 1.0.0 界定此版本爲初始穩定版,後面的一切更新都基於此版本進行修改。

版本狀態

描述方式 說明 含義
αa alpha 版 內測版本,內部測試的版本,bug 較多
βb beta 版 公測版本,給外部進行測試的版本,有缺陷
γg Gamma 版 至關成熟的測試版,於發行版相差無幾
rc Release Candidate 是前面三種測試版的進一步版本,實現了所有功能,清除了大部分 bug,接近發佈倒計時,有時會進一步細分爲 rc1,rc2

實際上大部分前端工具均遵照上述規則json

在商業軟件中還會見到以下字段.composer

描述方式 說明 含義
Demo 演示版 只集成了正式版部分功能,沒法升級
SP SP1 是 service pack 的意思表示升級包
Trial 試用版 試用版
Unregistered 未註冊 有功能或時間限制的版本
Lite 精簡版 只含有正式版核心功能
enhance 加強版 屬於正式版1
free 免費版 自由使用版本
release 發行版 有時間限制
upgrade 升級版 有功能加強或修復 bug
Retail  零售版 單獨發售
Cardware 共享版 公用許可證

版本限定

在進行包管理時,爲了保證安裝依賴的兼容性.
必須對依賴包版本進行限定.參考 npm 限定描述
舉例以下工具

{
  "devDependencies": {
    "karma": "0.13.22"
  }
}

表示安裝 0.13.22 版本的 karma.測試

爲了方便理解,版本限定的語法簡述爲爲 [範圍描述]<版本號描述>spa

  • 範圍描述可選,必須配和版本描述肯定範圍,沒法獨立存在code

    • < 小於某一版本號
    • <= 小於等於某一版本號
    • > 大於某一版本號
    • >= 大於等於某一版本號
    • = 等於某一版本號,沒有意義和直接寫該版本號同樣
    • ~ 基於版本號描述的最新補丁版本
    • ^ 基於版本號描述的最新兼容版本
    • - 某個範圍,他應該出如今兩個版本描述中間,實際上語法應爲 <版本描述>-<版本描述>,寫在此處爲了統一

    嚴格來說對 ~,^ 的表述須要結合具體的包管理工具和版本號規則來肯定.可是對於通常使用記住以下原則.
    ^ 是確保版本兼容性時,默認對次版本號的限定約束
    ~ 是確保版本兼容性時,默認對補丁號的約束htm

    利用 ^,~ 的意義在於確保工具包對依賴版本的兼容性,排除主版本更迭,
    形成依賴失效的可能.

  • 版本描述

    • * 通配符,相似 glob 模式 *
    • x,X 約等於 * 號,一般用於次版本和補丁的通配.

    0.x 警戒這種版本,說明該依賴還未穩定(若是它遵照語義化命名的話),此外因爲 0.x 版本隨時可能改變,此時 ^,~ 的都表示爲對補丁版的限制.

相關舉例以下

< 1.2.3     小於1.2.3 的版本都可 
= 1.2.3     只支持等於1.2.3 的版本 
<= 1.2.3    只支持小於等於1.2.3 的版本
> 1.2.3     只支持大於 1.2.3 的版本
>= 1.2.3    只支持大於等於 1.2.3 的版本
1.2.3-2     支持 >=1.2.3 <3.0.0 的版本
1.x.1       支持 >=1.0.1 <1.1.0 的版本
*           支持 >= 0.0.0 的版本
""          同 *
1           表示 >=1.0.0 <2.0.0 其他任意位置爲空類似
1.0         >= 1.0.0 < 1.1.0
~1.1.1      >=1.1.1 <1.2.0
~1.1        >=1.1.0 <1.2.0
~1          >=1.0.0 <2.0.0
^1.1.1      >=1.1.1 <2.0.0
^0.1.1      >=0.1.1 <0.2.0 注意這裏,不要覺得是 0.1.1-1.0.0 之間
^0.0.1      >=0.0.1 <0.0.2 同上,請注意

注意大部分包管理工具均遵照上述規則,可是在進行版本限定時,請參考包管理工具的配置項說明,肯定語法格式.

總結

最經常使用的知識

核心命名規則

  • 版本號一般稱爲 x.y.z

    • x 主版本號,通常向下不兼容時增長此值
    • y 次版本號,向下兼容,添加新特性時增長此值
    • z 補丁號,修復問題爲改變特性時增長此值
    • a,b,rc 分別表示 內測,公測,發行狀態

版本限定

  • ~ 在依賴版本兼容下,最近的補丁版
  • ^ 在依賴版本兼容下,最近的次版本

重點是保證版本依賴的兼容性,不容許出現依賴的主版本號範圍可變,即便你的開發包依舊可用

參考資料

語義化版本規範

npm 版本說明

composer version constraints

百度文庫-版本說明詳解

wiki 軟件版本

What's the difference between tilde(~) and caret(^) in package.json

相關文章
相關標籤/搜索