一、版本號簡介
軟件版本號有四部分組成:
- 第一部分為主版本號,變化了表示有了一個
不兼容上個版本的大更改。 - 第二部分為次版本號,變化了表示
增加了新功能,並且可以向后兼容。 - 第三部分為修訂版本號,變化了表示
有bug修復,並且可以向后兼容。 - 第四部分為日期版本號加希臘字母版本號,希臘字母版本號共有五種,分別為base、alpha、beta 、RC 、 release
eg:
關於希臘版本號:
-
Base
此版本表示該軟件僅僅是一個假頁面鏈接,通常包括所有的功能和頁面布局,但是 頁面中的功能都沒有做完整的實現,只是做為整體網站的一個基礎架構。 -
Alpha
軟件的初級版本,表示該軟件在此階段以實現軟件功能為主,通常只在軟件開發者 內部交流,一般而言,該版本軟件的Bug較多,需要繼續修改,是測試版本。測試 人員提交Bug經開發人員修改確認之后,發布到測試網址讓測試人員測試,此時可 將軟件版本標注為alpha版。 -
Beta
該版本相對於Alpha 版已經有了很大的進步,消除了嚴重錯誤,但還需要經過多次 測試來進一步消除,此版本主要的修改對象是軟件的UI。修改的的Bug 經測試人 員測試確認后可發布到外網上,此時可將軟件版本標注為 beta版。 -
RC
該版本已經相當成熟,基本上不存在導致錯誤的Bug,與即將發行的正式版本相差無幾。 -
Release
該版本意味“最終版本”,在前面版本的一系列測試版之后,終歸會有一個正式的版本,是最終交付用戶使用的一個版本。該版本有時也稱標准版。
二、 package.json中的依賴
dependencies字段指定了項目運行所依賴的模塊,devDependencies指定項目開發所需要的模塊(測試階段和過渡階段的依賴應該加在DevDependencies中)。它們都指向一個對象。該對象的各個成員,分別由模塊名和對應的版本要求組成,表示依賴的模塊及其版本范圍。
eg:
{
"name": "ethopia-waza",
"description": "a delightfully fruity coffee varietal",
"version": "1.2.3",
"devDependencies": {
"coffee-script": "~1.6.3"
},
"dependencies": {
"bar": "file:../foo/bar"
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
模塊名和版本號被假定組合成一個唯一的標識符。
version字段必須能夠被node-semver解析。node-semver作為依賴項被捆綁進了npm中。
其實,版本號的寫法並不是只有我們熟知的 波浪號( ~3.8.0 )、插入號( ^3.8.0 )和3.8.0,只要是能夠被node-semver解析的寫法都是可以的。
主要有以下幾種:
示例:
- version 必須確切匹配這個version
- >version 必須大於這個version
- >=version 必須大於等於這個version
- < version 必須小於這個version
- <=version 必須小於等於這個version
- ~version 大約相當於version
- ^version 與version兼容
- 1.2.x 可以是1.2.0、1.2.1等,但不能是1.3.0
- http://… URL作為依賴項
- * 匹配任何版本
- “”(空字符串) 匹配任何版本,和*一樣
- version1 - version2 相當於 >=version1 <=version2
- range1 || range2 range1或range2其中一個滿足時采用該version
- git… Git URL作為依賴項
- user/repo GitHub URLs
- tag 一個以tag發布的指定版本,參考npm-tag
- path/path/path 本地Paths
{
"dependencies": {
"foo": "1.0.0 - 2.9999.9999",
"bar": ">=1.0.2 <2.1.2", 必須大於等於1.0.2版本且小於2.1.2版本
"baz": ">1.0.2 <=2.3.4", 必須大於1.0.2版本且小於等於2.3.4版本
"boo": "2.3.1", 必須匹配這個版本
"boo": "~2.3.1", 約等於2.3.1,只更新最小版本,相當於2.3.X,即>=2.3.1 <2.4.0
"thr": "2.3.x",
"boo": "^2.3.1", 與2.3.1版本兼容,相當於2.X.X, 即>=2.3.1 < 3.0.0,不改變大版本號。
"qux": "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0",
"asd": "http://asdf.com/asdf.tar.gz", 在版本上指定一個壓縮包的url,當執行npm install 時這個壓縮包會被下載並安裝到本地。
"til": "~1.2",
"elf": "~1.2.3",
"two": "2.x",
"lat": "latest", 安裝最新版本
"dyl": "file:../dyl", 使用本地路徑
"adf": "git://github.com/user/project.git#commit-ish" 使用git URL加commit-ish
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
三、版本范圍詳解
- 連字符范圍:X.Y.Z-A.B.C
- 指明版本范圍
1.2.3 - 2.3.4: >=1.2.3 <=2.3.4 - 起始版本不全: 缺少的部分補0
1.2 - 2.3.4: 相當於1.2.0 - 2.3.4; - 結束版本不全:
所有以其開頭的版本均符合要求
1.2.3 - 2.3 :相當於 >=1.2.3 < 2.4.0
1.2.3 - 2: 相當於 >=1.2.3 < 3.0.0
- 指明版本范圍
- 帶有X的版本范圍:“1.2.X ”、“1.X” 、“1.2.*”
任何帶有X、x 和 *的版本號都是有誰存在就要匹配誰。- *:>=0.0.0
- “”: >=0.0.0
- 1.x: >=1.0.0 <2.0.0
- 1.2.x: >=1.2.0 <1.3.0
- 1: >=1.0.0 <2.0.0
- 1.2: >=1.2.0 <1.3.0
- 波浪號范圍 ~1.2.3 ~1.2 ~1
- ~1.2.3: >=1.2.3 <1.3.0, 只能更新
- ~1.2: >=1.2.0 <1.3.0(
相當於~1.2.0,1.2.x) - ~1:>=1.0.0 <2.0.0 (
相當於1.X,所有的1.X.X) - ~1.2.3-beta.2: >=1.2.3-beta.2 <1.3.0
參考文章:
轉載自https://blog.csdn.net/weixin_40817115/article/details/86611179

