package.json中版本號詳解


一、版本號簡介

軟件版本號有四部分組成:

  • 第一部分為主版本號,變化了表示有了一個不兼容上個版本的大更改
  • 第二部分為次版本號,變化了表示增加了新功能,並且可以向后兼容
  • 第三部分為修訂版本號,變化了表示有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

參考文章:

  1. npm-semver——The semantic versioner for npm
  2. 軟件的版本號組成及其意義

轉載自https://blog.csdn.net/weixin_40817115/article/details/86611179


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM