您好,登錄后才能下訂單哦!
小編給大家分享一下npm語義版本控制的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
場景引入
開發時,經常需要依賴一些模塊(包),我們進行了下載之后,便一直在該版本的模塊環境下進行開發,但是線上的服務器(其他開發者)一般都是根據依賴來配置文件,重新下載各個模塊,但是保不齊某個模塊的版本已經更新了,這時線上的包會更新到最新的版本,但你的代碼還是依據老版本來寫的,這時可能會產生一些不知名的 Bug。
為了保持 JavaScript 生態系統的健康,可靠和安全,npm 軟件包進行重大更新時,建議在 package.json 文件中發布帶有更新版本號的軟件包的新版本,文件遵循語義版本規范。
遵循語義版本規范可以幫助依賴代碼的其他開發人員了解給定版本中的更改范圍,并在必要時調整自己的代碼。
關于語義版本控制
為了幫助依賴你的代碼的開發人員,建議在 1.0.0 開始包版本并按如下方式遞增。npm 包的版本號的格式 x.y.z ,版本好的格式遵循 semver 2.0 規范。
代碼狀態 | 階段 | 規則 | 示例版本 |
---|---|---|---|
首發 | 新產品 New product | 從1.0.0開始 | 1.0.0 |
向后兼容的錯誤修復 | 補丁發布 Patch release | 第三位數增加 | 1.0.1 |
向后兼容的新功能 | 次要發布 Minor release | 中間數字增加 并將最后一個數字重置為零 | 1.1.0 |
破壞向后兼容性的更改 | 主要發布 Major release | 第一個數字增加 并將中間和最后一個數字重置為零 | 2.0.0 |
版本規范識別
脫字符 ^
npm 通過脫字符(^)來限定所安裝模塊的主版本號,而該脫字符對于不同的版本號有不同的更新機制。
^1.2.1 更新版本范圍為 >=1.2.1 && < 2.0.0 ;
^0.2.1 更新版本范圍為 >=0.2.1 && < 0.3.0 ;
^0.0.1 更新版本范圍為 0.0.2 (相當于鎖定為了 0.0.2 版本);
波浪號 ~
限定模塊的次要版本。
~1.2.1 更新版本范圍為 >=1.2.1 && < 1.3.0 ;
~0.2.1 更新版本范圍為 0.3.0 (相當于鎖定為了 0.3.0 版本);
當主版本號/次版本號/修訂版本號為 X or x or * 時,那么 update 或 install 是會下載該分支最新的版本號;
星號 *
跟新或安裝模塊時會安裝>=0.0.0的最新版本
1.x 更新版本范圍為 >=1.0.0&&< 2.0.0 ;
1.2.x 更新版本范圍為 >=1.2.0&&< 1.3.0 ;
更多
1.可以把項目依賴的包固定在某一個版本,強制大家安裝相同的依賴樹
npm install react --save -E
上面命令會將 react 的版本號進行固定,但是該方式只能控制項目中直接依賴的包的版本,無法控制項目模塊中依賴的包的版本號,所以這種方式也無法讓不同的使用者得到相同的依賴樹。
2.使用 npm shrinkwrap ,可以將項目中的模塊版本進行精確鎖定 運行命令 npm shrinkwrap ,會產生一個 npm-shrinkwrap.json 文件,這個文件保存了所有當前使用的依賴模塊的版本。把該文件提交到 git 倉庫中,這樣其他人在 clone 你的項目的時候,執行 npm install 命令時,npm 檢測到該文件中的信息會完整的還原出完全相同的依賴樹。
npm install --save-dev react // 安裝react npm prune // 清除未被使用的模塊 npm shrinkwrap
注:這種方式,安裝一個模塊包的方式顯得有些比較繁瑣
3.使用 yarn 可以得到模塊包精確控制的結果 yarn 是一個與 npm 兼容的 node 包管理器,使用它安裝 npm 包,會自動在項目目錄創建一個yarn.lock 文件,該文件包含了當前項目中所安裝的依賴包的版本信息,其他人在使用 yarn 安裝項目的依賴包時就可以通過該文件創建一個完全相同的依賴環境。
yarn init //使用yarn創建一個項目 yarn add <package> //使用yarn 安裝一個包
此外,yarn 除了可以自動幫我們鎖定依賴包的版本,yarn 還在本地緩存已經安裝過的包,當再次安裝時,直接從本地讀取即可。安裝速度得到大大提升。但 yarn 的使用需要整個團隊都去使用,還是有一定的成本的。
看完了這篇文章,相信你對“npm語義版本控制的示例分析”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。