国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

npm 語義化版本控制

dongfangyiyu / 1847人閱讀

摘要:版本控制為了在軟件版本號中包含更多意義,反映代碼所做的修改,產(chǎn)生了語義化版本,軟件的使用者能從版本號中推測軟件做的修改。的版本號由三部分組成主版本號次版本號補(bǔ)丁版本號。安裝參考依賴的版本版本號管理策略使用管理項(xiàng)目版本號語義化版本

NPM 版本控制

為了在軟件版本號中包含更多意義,反映代碼所做的修改,產(chǎn)生了語義化版本,軟件的使用者能從版本號中推測軟件做的修改。npm 包使用語義化版控制,我們可安裝一定版本范圍的 npm 包,npm 會選擇和你指定的版本相匹配(latest)最新版本安裝。
npm 的版本號由三部分組成:
主版本號次版本號補(bǔ)丁版本號。變更不同的版本號,代表不同的意義:

主版本號(major):軟件做了不兼容的變更(breaking change 重大變更);

次版本號(minor):添加功能或者廢棄功能,向下兼容;

補(bǔ)丁版本號(patch):bug 修復(fù),向下兼容。

有時候?yàn)榱吮磉_(dá)更加確切的版本,還會在版本號后面添加標(biāo)簽或者擴(kuò)展,來說明是預(yù)發(fā)布版本或者測試版本等。比如 3.2.3-beta-3

常見的標(biāo)簽有 :

標(biāo)簽 意義 補(bǔ)充
demo demo版本 可能用于驗(yàn)證問題的版本
dev 開發(fā)版 開發(fā)階段用的,bug 多,體積較大等特點(diǎn),功能不完善
alpha α版本 用于內(nèi)部交流或者測試人員測試,bug較多
beta 測試版(β版本) 較α版本,有較大的改進(jìn),但是還是有bug
gamma (γ)伽馬版本 較α和β版本有很大的改進(jìn),與穩(wěn)定版相差無幾,用戶可使用
trial 試用版本 本軟件通常都有時間限制,過期之后用戶如果希望繼續(xù)使用,一般得交納一定的費(fèi)用進(jìn)行注冊或購買。有些試用版軟件還在功能上做了一定的限制。
stable 穩(wěn)定版
csp 內(nèi)容安全版本 js庫常用
latest 最新版本 不指定版本和標(biāo)簽,npm 默認(rèn)安最新版

更多關(guān)于標(biāo)簽的內(nèi)容

查看標(biāo)簽:

npm dist-tags ls 
npm dist-tags ls vue

得到:

beta: 2.6.0-beta.3
csp: 1.0.28-csp
latest: 2.6.10

安裝帶標(biāo)簽的版本

npm i @
npm i vue@beta # 安裝 2.6.0-beta.3
版本號變更規(guī)則

版本號只升不降,不得在數(shù)字前加0,比如 2.01.2 不允許的;

0.y.z,處于開發(fā)階段的版本;

第一個正式版版本往往命名為 1.0.0;

先行版本必須在補(bǔ)丁版本之后添加,比如 2.3.7-0,0表示先行版本,和補(bǔ)丁版本用-分隔;

版本的比較依次比較主版本次版本補(bǔ)丁版本先行版本,直到第一個能得出比較結(jié)果為止;

不小心把一個不兼容的改版當(dāng)成了次版本號發(fā)行了該怎么辦?一旦發(fā)現(xiàn)自己破壞了語義化版本控制的規(guī)范,就要修正這個問題,并發(fā)行一個新的次版本號來更正這個問題并且恢復(fù)向下兼容。即使是這種情況,也不能去修改已發(fā)行的版本。

NPM版本計算器

如何處理即將棄用的功能?

棄用現(xiàn)存的功能是軟件開發(fā)中的家常便飯,也通常是向前發(fā)展所必須的。但當(dāng)你棄用公共API的一部分時,你應(yīng)該做兩件事:
(1)更新文檔以便使用者知道這個變化。
(2)發(fā)行不包含棄用功能的次版本。在新主版本中完全移除棄用功能前,至少應(yīng)有一個不包含棄用功能的次版本發(fā)布,以便使用者能夠平滑過渡到新的API。

如何更新版本號?不用手動修改 package.json。而是用如下命令:

npm version [ | major | minor | patch | premajor | preminor | prepatch | prerelease | from-git]

newversion: 直接給一個版本號;

major: 主版本增加1;

premajor: 預(yù)備主版本,主版本增加1,增加先行版本號;

prelease: 預(yù)先發(fā)布版本,先行版本號增加1;

git 和 npm version 結(jié)合 手動更改版本號

執(zhí)行 npm version -m "xx %s xx" 改變npm版本的同時,會執(zhí)行一次 git commt -m "xx %s xx"并用版本號打一個tag,%s 會替換成版本號,前提是版本庫是干凈的(clean)

自動更新版本

.git/hooks目錄內(nèi),新建post-commit,輸入以下內(nèi)容:

#!/bin/sh
COMMIT_MSG="$(git log --pretty=format:"%s" -1 head)"
echo "$COMMIT_MSG" | grep  -q  "^[0-9]"
if [ $? -ne 0 ];then
   # 自動修改 patch
  echo $(npm version patch)
fi

在執(zhí)行 git commit -m "message"后,會檢測message是否是版本號(y.x.z的形式),不是,則執(zhí)行 npm version patch更新補(bǔ)丁版本,打一個tag。

如果想自動修改次版本,post-commit 的內(nèi)容即可。

版本運(yùn)算符

版本運(yùn)算符指定了一定范圍的版本。
主要有~^-<<=>>==版本運(yùn)算符。

~ 版本號 ----- 指定主版本號或者次版本號相同

~ + 只含主版本 --- 主版本相同;
~ + 含有次版本 --- 主版本和次版本號相同。

版本范圍 匹配版本
~3 3.x 或者 3.0.0 <= v < 4.0.0
~3.1 3.1.x 或者 3.1.0 <= v <3.2.0
~3.1.2 3.1.2 < v < 3.2.0

指定的版本范圍含有預(yù)發(fā)布版本,只會匹配和完整版本號相同的預(yù)發(fā)布版本。
~3.1.3-beta.2 匹配 3.1.3-beat.3 不匹配 3.1.4-beat-2

npm i lodash@~3 # 安裝 3.10.1
npm i lodash@~3.9 # 安裝 3.9.3
npm i lodash@~3.9.1 # 安裝 3.9.3
npm i lodash@~3.8.0 # 安裝 3.8.0
^ 版本號 --- 第一個非零 版本號相同
版本范圍 匹配版本 補(bǔ)充
^3.1.5 3.1.5 <= v < 4.0.0
^0.3.6 0.3.6 <= v < 0.4.0
^0.0.2 0.0.2 <= v < 0.0.3
^3.x.x 3.0.0 <= v < 4.0.0 版本號缺少的位置,會被 0 填充
^4.2.x 4.2.0 <= v < 4.3.0

npm 安裝包時,默認(rèn)使用 ^ 匹配版本。

安裝主版本號為 3 的最新版本:

npm i lodash@^3 # 安裝 3.10.1
npm i lodash@^3.9 # 安裝 3.10.1
npm i lodash@^3.8.0 # 安裝 3.10.1
~ vs ^
版本范圍 含義 匹配的版本 說明
~3.3.0 與3.3.0相似 3.3.0 <= v < 3.4.0 主版本和次版本相同
^3.3.0 與3.3.0兼容 3.3.0 <= v < 4 主版本相同

同一個版本號,^ 能匹配的范圍大些,更加激進(jìn)。

例子

npm i lodash@^3.3.0 # 安裝 3.10.1
npm i lodash@~3.3.0 # 安裝 3.3.1

~ 和 ≈ 差不多,可將 ~ 理解成相似,這樣就分辨和理解了,~指定的是相似版本
^ 可理解成兼容版本

- 指定精確范圍
版本范圍 匹配版本 補(bǔ)充
2.0.0 - 3.2.7 2.0.0 <= v <= 3.2.7 - 前后有空格
0.4 - 3 0.4.0 <= v <= 3.0.0 缺少的版本號,被 0 填充
npm i vue@"1 - 1.9" # 安裝 1.0.28
版本號比較器
版本范圍 匹配版本 補(bǔ)充
<2.2.0 小于2.2.0 的版本
<=2.0.0 小于等于 2.0.0 的版本
>4.2.0 大于4.2.0 的版本
>=4.2.0 大于等于 4.2.0 的版本
=4.3.0 等于 4.3.0 的版本

是轉(zhuǎn)義字符。

npm i lodash@<3.5 # 安裝 3.4.0
npm i lodash@<=3.5 # 安裝 3.5.0
npm i lodash@>3.5 # 安裝 4.17.11
npm i lodash@>=3.5 # 安裝 4.17.11
npm i vue@">1 <2.3" # 安裝 2.2.6
分組 ||

或者的關(guān)系連接兩個版本范圍,極少使用。

npm i vue@"^0.7 || ~2" # 安裝 2.6.10
參考

依賴的版本
版本號管理策略&&使用npm管理項(xiàng)目版本號
語義化版本2.0
whats-the-difference-between-tilde-and-caret-in-package-json

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/109246.html

相關(guān)文章

  • NPM酷庫:semver 語義版本判斷

    摘要:今天在此向大家推薦一種非常流行的版本號命名規(guī)則語義化版本。語義化版本約定修訂版本號代表在和之前接口不變的前提下修正了。就是專門用于語義化版本號檢查的庫,其也是語義化版本標(biāo)準(zhǔn)的制定者。 NPM酷庫,每天兩分鐘,了解一個流行NPM庫。 軟件的命運(yùn)就是不斷維護(hù)、更新、迭代,所以我們用版本號來區(qū)分一個軟件的不同時期和形態(tài),版本號的命名方式有各種各樣,有的以小數(shù)表示(幾點(diǎn)幾),有的以日期表示,有...

    Carbs 評論0 收藏0
  • [譯]Yarn:一個新的JavaScript包管理器

    摘要:第一個主要的包管理器在被引用后不久就搭建起來了,并且迅速成為世界上最受歡迎的包管理器之一。簡介是一款新的包管理器,在取代客戶端和其他包管理器現(xiàn)有工作流的同時,又保留了對代理的兼容性。 在JavaScript社區(qū),工程師們分享了成百上千的代碼段,我們不用自己從頭編寫基礎(chǔ)組件、類庫或者框架。反過來,每段代碼又或許依賴于其它的代碼段,而這些依賴就是通過 package managers(包管...

    Steve_Wang_ 評論0 收藏0
  • pkg版本規(guī)范管理自動最佳實(shí)踐

    摘要:為什么為什么不是為什么不是為什么不是為什么不是嚴(yán)格的指導(dǎo)原則有助于為版本號提供意義。此外,如果你有打破當(dāng)前的,這同樣表示你需要升級你的主版本號了。 前提 何為版本?版本即語義版本控制( Semantic version 后面簡稱為 SemVer )是一種版本控制系統(tǒng),在過去幾年中一直在不斷發(fā)展。 隨著每天都在構(gòu)建新的插件,插件,擴(kuò)展和庫,擁有通用的軟件開發(fā)項(xiàng)目版本化方法是一件好事,可以...

    Ocean 評論0 收藏0
  • 前端核心工具:yarn、npm、cnpm三者如何優(yōu)雅的在一起使用 ?

    摘要:由于文件中版本號的特點(diǎn),下面三個版本號在安裝的時候代表不同的含義。安裝版本統(tǒng)一為了防止拉取到不同的版本,有一個鎖定文件記錄了被確切安裝上的模塊的版本號。 showImg(https://segmentfault.com/img/bVbs8Rg?w=1920&h=1080); 一位用不好包管理器的前端,是一個入門級前端,一個用不好webpack的前端,是一個初級前端 三個包管理器是可以一...

    sihai 評論0 收藏0
  • 前端核心工具:yarn、npm、cnpm三者如何優(yōu)雅的在一起使用 ?

    摘要:由于文件中版本號的特點(diǎn),下面三個版本號在安裝的時候代表不同的含義。安裝版本統(tǒng)一為了防止拉取到不同的版本,有一個鎖定文件記錄了被確切安裝上的模塊的版本號。 showImg(https://segmentfault.com/img/bVbs8Rg?w=1920&h=1080); 一位用不好包管理器的前端,是一個入門級前端,一個用不好webpack的前端,是一個初級前端 三個包管理器是可以一...

    plus2047 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<