欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

npm 語(yǔ)義版本控制詳解

 更新時(shí)間:2019年09月10日 09:10:58   作者:pr_云不欺  
這篇文章主要介紹了npm 語(yǔ)義版本控制詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

場(chǎng)景引入

開(kāi)發(fā)時(shí),經(jīng)常需要依賴(lài)一些模塊(包),我們進(jìn)行了下載之后,便一直在該版本的模塊環(huán)境下進(jìn)行開(kāi)發(fā),但是線上的服務(wù)器(其他開(kāi)發(fā)者)一般都是根據(jù)依賴(lài)來(lái)配置文件,重新下載各個(gè)模塊,但是保不齊某個(gè)模塊的版本已經(jīng)更新了,這時(shí)線上的包會(huì)更新到最新的版本,但你的代碼還是依據(jù)老版本來(lái)寫(xiě)的,這時(shí)可能會(huì)產(chǎn)生一些不知名的 Bug。

為了保持 JavaScript 生態(tài)系統(tǒng)的健康,可靠和安全,npm 軟件包進(jìn)行重大更新時(shí),建議在 package.json 文件中發(fā)布帶有更新版本號(hào)的軟件包的新版本,文件遵循語(yǔ)義版本規(guī)范。

遵循語(yǔ)義版本規(guī)范可以幫助依賴(lài)代碼的其他開(kāi)發(fā)人員了解給定版本中的更改范圍,并在必要時(shí)調(diào)整自己的代碼。

關(guān)于語(yǔ)義版本控制

為了幫助依賴(lài)你的代碼的開(kāi)發(fā)人員,建議在 1.0.0 開(kāi)始包版本并按如下方式遞增。npm 包的版本號(hào)的格式 x.y.z ,版本好的格式遵循 semver 2.0 規(guī)范。

代碼狀態(tài) 階段 規(guī)則 示例版本
首發(fā) 新產(chǎn)品
New product
從1.0.0開(kāi)始 1.0.0
向后兼容的錯(cuò)誤修復(fù) 補(bǔ)丁發(fā)布
Patch release
第三位數(shù)增加 1.0.1
向后兼容的新功能 次要發(fā)布
Minor release
中間數(shù)字增加
并將最后一個(gè)數(shù)字重置為零
1.1.0
破壞向后兼容性的更改 主要發(fā)布
Major release
第一個(gè)數(shù)字增加
并將中間和最后一個(gè)數(shù)字重置為零
2.0.0

版本規(guī)范識(shí)別

脫字符 ^

npm 通過(guò)脫字符(^)來(lái)限定所安裝模塊的主版本號(hào),而該脫字符對(duì)于不同的版本號(hào)有不同的更新機(jī)制。

  • ^1.2.1 更新版本范圍為 >=1.2.1 && < 2.0.0 ;
  • ^0.2.1 更新版本范圍為 >=0.2.1 && < 0.3.0 ;
  • ^0.0.1 更新版本范圍為 0.0.2 (相當(dāng)于鎖定為了 0.0.2 版本);

波浪號(hào) ~

限定模塊的次要版本。

  • ~1.2.1 更新版本范圍為 >=1.2.1 && < 1.3.0 ;
  • ~0.2.1 更新版本范圍為 0.3.0 (相當(dāng)于鎖定為了 0.3.0 版本);
  • 當(dāng)主版本號(hào)/次版本號(hào)/修訂版本號(hào)為 X or x or * 時(shí),那么 update 或 install 是會(huì)下載該分支最新的版本號(hào);

星號(hào) *

跟新或安裝模塊時(shí)會(huì)安裝>=0.0.0的最新版本

  • 1.x 更新版本范圍為 >=1.0.0&&< 2.0.0 ;
  • 1.2.x 更新版本范圍為 >=1.2.0&&< 1.3.0 ;

更多

1.可以把項(xiàng)目依賴(lài)的包固定在某一個(gè)版本,強(qiáng)制大家安裝相同的依賴(lài)樹(shù)

npm install react --save -E

上面命令會(huì)將 react 的版本號(hào)進(jìn)行固定,但是該方式只能控制項(xiàng)目中直接依賴(lài)的包的版本,無(wú)法控制項(xiàng)目模塊中依賴(lài)的包的版本號(hào),所以這種方式也無(wú)法讓不同的使用者得到相同的依賴(lài)樹(shù)。

2.使用 npm shrinkwrap ,可以將項(xiàng)目中的模塊版本進(jìn)行精確鎖定 運(yùn)行命令 npm shrinkwrap ,會(huì)產(chǎn)生一個(gè) npm-shrinkwrap.json 文件,這個(gè)文件保存了所有當(dāng)前使用的依賴(lài)模塊的版本。把該文件提交到 git 倉(cāng)庫(kù)中,這樣其他人在 clone 你的項(xiàng)目的時(shí)候,執(zhí)行 npm install 命令時(shí),npm 檢測(cè)到該文件中的信息會(huì)完整的還原出完全相同的依賴(lài)樹(shù)。

npm install --save-dev react // 安裝react
npm prune  // 清除未被使用的模塊
npm shrinkwrap

注:這種方式,安裝一個(gè)模塊包的方式顯得有些比較繁瑣

3.使用 yarn 可以得到模塊包精確控制的結(jié)果 yarn 是一個(gè)與 npm 兼容的 node 包管理器,使用它安裝 npm 包,會(huì)自動(dòng)在項(xiàng)目目錄創(chuàng)建一個(gè)yarn.lock 文件,該文件包含了當(dāng)前項(xiàng)目中所安裝的依賴(lài)包的版本信息,其他人在使用 yarn 安裝項(xiàng)目的依賴(lài)包時(shí)就可以通過(guò)該文件創(chuàng)建一個(gè)完全相同的依賴(lài)環(huán)境。

yarn init //使用yarn創(chuàng)建一個(gè)項(xiàng)目
yarn add <package> //使用yarn 安裝一個(gè)包

此外,yarn 除了可以自動(dòng)幫我們鎖定依賴(lài)包的版本,yarn 還在本地緩存已經(jīng)安裝過(guò)的包,當(dāng)再次安裝時(shí),直接從本地讀取即可。安裝速度得到大大提升。但 yarn 的使用需要整個(gè)團(tuán)隊(duì)都去使用,還是有一定的成本的。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Node.JS如何實(shí)現(xiàn)JWT原理

    Node.JS如何實(shí)現(xiàn)JWT原理

    jwt是json web token的簡(jiǎn)稱(chēng),本文介紹它的原理,最后后端用nodejs自己實(shí)現(xiàn)如何為客戶(hù)端生成令牌token和校驗(yàn)token
    2020-09-09
  • node.js環(huán)境搭建圖文詳解

    node.js環(huán)境搭建圖文詳解

    Node.js 是一個(gè)讓 JavaScript 運(yùn)行在服務(wù)端的開(kāi)發(fā)平臺(tái),小編在空閑時(shí)間就研究nodejs的相關(guān)知識(shí),下面是本文給大家?guī)?lái)的node.js環(huán)境搭建教程圖解,感興趣的朋友跟隨小編一起學(xué)習(xí)吧
    2018-09-09
  • node結(jié)合swig渲染摸板的方法

    node結(jié)合swig渲染摸板的方法

    本篇文章主要介紹了node結(jié)合swig渲染摸板的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • nodejs爬蟲(chóng)初試superagent和cheerio

    nodejs爬蟲(chóng)初試superagent和cheerio

    這篇文章主要介紹了nodejs爬蟲(chóng)初試superagent和cheerio的相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-03-03
  • node.js+express留言板功能實(shí)現(xiàn)示例

    node.js+express留言板功能實(shí)現(xiàn)示例

    本文介紹基于nodejs+express+art-template的留言板功能。包含列表界面、添加界面和發(fā)送留言功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Nest.js Controller路由和請(qǐng)求處理強(qiáng)大功能解析

    Nest.js Controller路由和請(qǐng)求處理強(qiáng)大功能解析

    這篇文章主要為大家,介紹了Nest.js Controller路由和請(qǐng)求處理強(qiáng)大功能解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • 為什么使用koa2搭建微信第三方公眾平臺(tái)的原因

    為什么使用koa2搭建微信第三方公眾平臺(tái)的原因

    這篇文章主要介紹了為什么使用koa2搭建微信第三方公眾平臺(tái)的原因,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Sequelize中用group by進(jìn)行分組聚合查詢(xún)

    Sequelize中用group by進(jìn)行分組聚合查詢(xún)

    大家都知道在SQL查詢(xún)中,分組查詢(xún)是較常用的一種查詢(xún)方式。分組查詢(xún)是指通過(guò)GROUP BY關(guān)鍵字,將查詢(xún)結(jié)果按照一個(gè)或多個(gè)字段進(jìn)行分組,分組時(shí)字段值相同的會(huì)被分為一組。在Node.js基于Sequelize的ORM框架中,同樣支持分組查詢(xún),使用非常簡(jiǎn)單方便。下面來(lái)看看詳細(xì)的介紹。
    2016-12-12
  • Nodejs--post的公式詳解

    Nodejs--post的公式詳解

    本篇文章主要介紹了Nodejs--post公式的相關(guān)知識(shí),具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-04-04
  • node.js中使用ejs渲染數(shù)據(jù)的代碼實(shí)現(xiàn)

    node.js中使用ejs渲染數(shù)據(jù)的代碼實(shí)現(xiàn)

    這篇文章主要介紹了node.js中使用ejs渲染數(shù)據(jù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-11-11

最新評(píng)論