前言:講解版本命名和版本限定的相關知識html
咱們常見的版本命名格式爲前端
[name].x.y.z-[state]
name
爲可選字段,通常爲 v
,表示 versionx.y.z
爲各版本的序號,遵循 語義化版本命名規範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
a,b,rc
分別表示 內測,公測,發行狀態~
在依賴版本兼容下,最近的補丁版^
在依賴版本兼容下,最近的次版本重點是保證版本依賴的兼容性,不容許出現依賴的主版本號範圍可變,即便你的開發包依舊可用
What's the difference between tilde(~) and caret(^) in package.json