1. 語義化版本 SemVer(Semantic Versioning)
語義化的版本號必須采用
XYZ
格式(MAJOR.MINOR.PATCH)断序,其中X
历涝,Y
和Z
是非負(fù)整數(shù)幔烛,并且不得包含前導(dǎo)零。X
是主要版本(主版本號),Y
是次要版本(次版本號)鉴吹,Z
是補(bǔ)丁版本(修訂號)良风。每個元素必須在數(shù)值上增加谊迄。如:
1.2.3
主要版本 1,次要版本 2烟央,補(bǔ)丁版本 3a. 主要版本更新:表示一個破壞兼容性的大變化统诺;
b. 次要版本更新:表示不會破壞任何內(nèi)容的新功能;
c. 補(bǔ)丁版本更新:表示不會破壞任何內(nèi)容的錯誤修復(fù)疑俭。換句話說:錯誤修復(fù)不影響 API 增加補(bǔ)丁版本粮呢,向后兼容的 API 添加或更改增加次要版本,向后不兼容的 API 更改增加主要版本
Q:
v1.2.3
是語義版本嗎?
A:這不是語義版本啄寡。但是豪硅,在語義版本前添加v
前綴是一種常用方式(英文),表示它是版本號这难。通過版本控制經(jīng)持畚螅可以看到將version
縮寫為v
。示例:git tag v1.2.3 -m "Release version 1.2.3"
姻乓,在這種情況下嵌溢,v1.2.3
是標(biāo)記名稱,語義版本是1.2.3
蹋岩。
2.
當(dāng)您使用 npm 安裝包(并保存它)時(shí)赖草,會在 package.json 中添加一個包含包名稱和應(yīng)該使用的 semver 的條目。默認(rèn)情況下剪个,npm 安裝最新版本秧骑,并預(yù)先插入版本號,例如 “^1.2.12”扣囊,這表示至少應(yīng)該使用版本 1.2.12乎折,但任何高于此版本的版本都可以,只要它具有相同的主要版本侵歇,由于次要版本和補(bǔ)丁編號僅代表錯誤修正和非破壞性添加骂澄, 你可以安全地使用任何更高版本的同一主要版本。閱讀更多關(guān)于 semver 通配符的信息惕虑,請看 這里坟冲。
3.
(1)指定版本號
:如 "classnames": "2.2.5"
,表示安裝 2.2.5
的版本溃蔫。
(2)~版本號
:如 "babel-plugin-import": "~1.1.0"
健提,表示安裝 1.1.x
的最新版本(不低于 1.1.0
),但是不安裝 1.2.x
伟叛,也就是說安裝時(shí)不改變大版本號和次要版本號私痹。
(3)^版本號
:如 "antd": "^3.1.4"
,表示安裝 3.1.4
及以上的版本统刮,但是不安裝 4.0.0
侄榴,也就是說安裝時(shí)不改變大版本號。