理解版本命名及限定規(guī)則
前言:講解版本命名和版本限定的相關(guān)知識(shí)
我們常見(jiàn)的版本命名格式為
[name].x.y.z-[state]
name為可選字段,一般為 v,表示 version
x.y.z 為各版本的序號(hào),遵循 語(yǔ)義化版本命名規(guī)范
實(shí)際上基于此規(guī)范,不應(yīng)該在版本前出現(xiàn) name 字段.
state 可選字段,表示版本狀態(tài),例如 b 表示 beta 測(cè)試版,其他常見(jiàn)狀態(tài),后有詳述
語(yǔ)義化版本命名規(guī)則該規(guī)則對(duì)版本的迭代命名,做了很好的限制.
核心規(guī)則如下.
序號(hào) | 格式要求 | 說(shuō)明 | |
---|---|---|---|
x | 非負(fù)整數(shù) | 主版本號(hào)(major),進(jìn)行不向下兼容的修改時(shí),遞增主版本號(hào) | |
y | 非負(fù)整數(shù) | 次版本號(hào)(minor),保持向下兼容,新增特性時(shí),遞增次版本號(hào) | |
z | 非負(fù)整數(shù) | 修訂號(hào)(patch),保持向下兼容,修復(fù)問(wèn)題但不影響特性時(shí),遞增修訂號(hào) |
0.y.z 表示開(kāi)發(fā)階段,一切可能隨時(shí)改變,非穩(wěn)定版。
1.0.0 界定此版本為初始穩(wěn)定版,后面的一切更新都基于此版本進(jìn)行修改。
版本狀態(tài)描述方式 | 說(shuō)明 | 含義 |
---|---|---|
α或a | alpha 版 | 內(nèi)測(cè)版本,內(nèi)部測(cè)試的版本,bug 較多 |
β或b | beta 版 | 公測(cè)版本,給外部進(jìn)行測(cè)試的版本,有缺陷 |
γ或g | Gamma 版 | 相當(dāng)成熟的測(cè)試版,于發(fā)行版相差無(wú)幾 |
rc | Release Candidate | 是前面三種測(cè)試版的進(jìn)一步版本,實(shí)現(xiàn)了全部功能,清除了大部分 bug,接近發(fā)布倒計(jì)時(shí),有時(shí)會(huì)進(jìn)一步細(xì)分為 rc1,rc2 |
實(shí)際上大部分前端工具均遵守上述規(guī)則
在商業(yè)軟件中還會(huì)見(jiàn)到如下字段.
描述方式 | 說(shuō)明 | 含義 |
---|---|---|
Demo | 演示版 | 只集成了正式版部分功能,無(wú)法升級(jí) |
SP | SP1 | 是 service pack 的意思表示升級(jí)包 |
Trial | 試用版 | 試用版 |
Unregistered | 未注冊(cè) | 有功能或時(shí)間限制的版本 |
Lite | 精簡(jiǎn)版 | 只含有正式版核心功能 |
enhance | 增強(qiáng)版 | 屬于正式版1 |
free | 免費(fèi)版 | 自由使用版本 |
release | 發(fā)行版 | 有時(shí)間限制 |
upgrade | 升級(jí)版 | 有功能增強(qiáng)或修復(fù) bug |
Retail | 零售版 | 多帶帶發(fā)售 |
Cardware | 共享版 | 公用許可證 |
在進(jìn)行包管理時(shí),為了保證安裝依賴的兼容性.
必須對(duì)依賴包版本進(jìn)行限定.參考 npm 限定描述
舉例如下
{ "devDependencies": { "karma": "0.13.22" } }
表示安裝 0.13.22 版本的 karma.
為了方便理解,版本限定的語(yǔ)法簡(jiǎn)述為為 [范圍描述]<版本號(hào)描述>
范圍描述可選,必須配和版本描述確定范圍,無(wú)法獨(dú)立存在
< 小于某一版本號(hào)
<= 小于等于某一版本號(hào)
> 大于某一版本號(hào)
>= 大于等于某一版本號(hào)
= 等于某一版本號(hào),沒(méi)有意義和直接寫(xiě)該版本號(hào)一樣
~ 基于版本號(hào)描述的最新補(bǔ)丁版本
^ 基于版本號(hào)描述的最新兼容版本
- 某個(gè)范圍,他應(yīng)該出現(xiàn)在兩個(gè)版本描述中間,實(shí)際上語(yǔ)法應(yīng)為 <版本描述>-<版本描述>,寫(xiě)在此處為了統(tǒng)一
嚴(yán)格來(lái)講對(duì) ~,^ 的表述需要結(jié)合具體的包管理工具和版本號(hào)規(guī)則來(lái)確定.但是對(duì)于一般使用記住如下原則.
^ 是確保版本兼容性時(shí),默認(rèn)對(duì)次版本號(hào)的限定約束
~ 是確保版本兼容性時(shí),默認(rèn)對(duì)補(bǔ)丁號(hào)的約束
利用 ^,~ 的意義在于確保工具包對(duì)依賴版本的兼容性,排除主版本更迭,
造成依賴失效的可能.
版本描述
* 通配符,類似 glob 模式 *
x,X 約等于 * 號(hào),通常用于次版本和補(bǔ)丁的通配.
0.x 警惕這種版本,說(shuō)明該依賴還未穩(wěn)定(如果它遵守語(yǔ)義化命名的話),此外由于 0.x 版本隨時(shí)可能改變,此時(shí) ^,~ 的都表示為對(duì)補(bǔ)丁版的限制.
相關(guān)舉例如下
< 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 同上,請(qǐng)注意
總結(jié)注意大部分包管理工具均遵守上述規(guī)則,但是在進(jìn)行版本限定時(shí),請(qǐng)參考包管理工具的配置項(xiàng)說(shuō)明,確定語(yǔ)法格式.
最常用的知識(shí)
核心命名規(guī)則
版本號(hào)通常稱為 x.y.z
x 主版本號(hào),一般向下不兼容時(shí)增加此值
y 次版本號(hào),向下兼容,添加新特性時(shí)增加此值
z 補(bǔ)丁號(hào),修復(fù)問(wèn)題為改變特性時(shí)增加此值
a,b,rc 分別表示 內(nèi)測(cè),公測(cè),發(fā)行狀態(tài)
版本限定~ 在依賴版本兼容下,最近的補(bǔ)丁版
^ 在依賴版本兼容下,最近的次版本
參考資料重點(diǎn)是保證版本依賴的兼容性,不允許出現(xiàn)依賴的主版本號(hào)范圍可變,即使你的開(kāi)發(fā)包依舊可用
語(yǔ)義化版本規(guī)范
npm 版本說(shuō)明
composer version constraints
百度文庫(kù)-版本說(shuō)明詳解
wiki 軟件版本
What"s the difference between tilde(~) and caret(^) in package.json
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/25912.html
摘要:學(xué)習(xí)正則表達(dá)式也是如此,循序漸進(jìn),方能厚積薄發(fā)。概念分組捕獲是指將想要匹配的正則表達(dá)式用小括號(hào)括起來(lái),然后與限定符組合使用,可以連續(xù)匹配符合規(guī)則的字符串。 正則表達(dá)式是一個(gè)非常有用的用來(lái)匹配驗(yàn)證字符串的工具。很多人覺(jué)得正則表達(dá)式規(guī)則繁多,學(xué)了也會(huì)忘記,不如等到需要使用的時(shí)候再去查閱即可。這樣的觀點(diǎn)也無(wú)可厚非,不過(guò)我曾經(jīng)看到過(guò)一個(gè)絕妙的關(guān)于閱讀的比喻,閱讀就像是將竹簍浸入到水里面,雖然撈...
摘要:命名空間可以解決以下兩類問(wèn)題用戶編寫(xiě)的代碼與內(nèi)部的類函數(shù)常量或第三方類函數(shù)常量之間的名字沖突。在命名空間內(nèi)部訪問(wèn)全局類函數(shù)和常量調(diào)用全局函數(shù)訪問(wèn)全局常量實(shí)例化全局類命名空間和動(dòng)態(tài)語(yǔ)言特征命名空間的實(shí)現(xiàn)受到其語(yǔ)言自身的動(dòng)態(tài)特征的影響。 PHP 命名空間(namespace)是在PHP 5.3中加入的,如果你學(xué)過(guò)C#和Java,那命名空間就不算什么新事物。 不過(guò)在PHP當(dāng)中還是有著相當(dāng)重要...
摘要:的依賴關(guān)系,根據(jù)依賴關(guān)系配置完成之間的裝配。的行為信息,如生命周期范圍及生命周期各過(guò)程的回調(diào)函數(shù)。使用該種裝配模式時(shí),優(yōu)先匹配參數(shù)最多的構(gòu)造函數(shù)。如果提供了默認(rèn)的構(gòu)造函數(shù),則采用否則采用進(jìn)行自動(dòng)裝配。 點(diǎn)擊進(jìn)入我的博客 1 Spring容器與Bean配置信息 Bean配置信息 Bean配置信息是Bean的元數(shù)據(jù)信息,它由一下4個(gè)方面組成: Bean的實(shí)現(xiàn)類 Bean的屬性信息,如數(shù)...
摘要:前端開(kāi)發(fā)規(guī)范文檔規(guī)范目的使開(kāi)發(fā)流程更加規(guī)范化。中的非注釋類中文字符須轉(zhuǎn)換成編碼使用,以避免編碼錯(cuò)誤時(shí)亂碼顯示。文件規(guī)范文件名用英文單詞,多個(gè)單詞用駝峰命名法。書(shū)寫(xiě)規(guī)范命名規(guī)范。圖片規(guī)范命名應(yīng)用小寫(xiě)英文數(shù)字組合,便于團(tuán)隊(duì)其他成員理解。 Web前端開(kāi)發(fā)規(guī)范文檔 規(guī)范目的: 使開(kāi)發(fā)流程更加規(guī)范化。 通用規(guī)范: TAB鍵用兩個(gè)空格代替(WINDOWS下TAB鍵占四個(gè)空格,LINUX下TAB鍵...
摘要:前端開(kāi)發(fā)規(guī)范文檔規(guī)范目的使開(kāi)發(fā)流程更加規(guī)范化。中的非注釋類中文字符須轉(zhuǎn)換成編碼使用,以避免編碼錯(cuò)誤時(shí)亂碼顯示。文件規(guī)范文件名用英文單詞,多個(gè)單詞用駝峰命名法。書(shū)寫(xiě)規(guī)范命名規(guī)范。圖片規(guī)范命名應(yīng)用小寫(xiě)英文數(shù)字組合,便于團(tuán)隊(duì)其他成員理解。 Web前端開(kāi)發(fā)規(guī)范文檔 規(guī)范目的: 使開(kāi)發(fā)流程更加規(guī)范化。 通用規(guī)范: TAB鍵用兩個(gè)空格代替(WINDOWS下TAB鍵占四個(gè)空格,LINUX下TAB鍵...
閱讀 2980·2021-11-16 11:45
閱讀 5124·2021-09-22 10:57
閱讀 1763·2021-09-08 09:36
閱讀 1585·2021-09-02 15:40
閱讀 2508·2021-07-26 23:38
閱讀 1184·2019-08-30 15:55
閱讀 923·2019-08-30 15:54
閱讀 1213·2019-08-29 14:06