摘要:為什么為什么不是為什么不是為什么不是為什么不是嚴(yán)格的指導(dǎo)原則有助于為版本號提供意義。此外,如果你有打破當(dāng)前的,這同樣表示你需要升級你的主版本號了。
前提
何為版本?版本即語義版本控制( Semantic version 后面簡稱為 SemVer )是一種版本控制系統(tǒng),在過去幾年中一直在不斷發(fā)展。 隨著每天都在構(gòu)建新的插件,插件,擴展和庫,擁有通用的軟件開發(fā)項目版本化方法是一件好事,可以幫助我們跟蹤正在發(fā)生的事情。
SemVer 的格式式為 x.y.z,其中:
x代表主要版本( Major )
y代表次要版本( Minor )
z代表補丁( Patch )
SemVer如何工作?通過 SemVer 來確定你應(yīng)該發(fā)布的版本類型是很簡單的。
如果你修復(fù) bug 或者一些細(xì)節(jié)修改,那么這將被歸類為補丁,在這種情況下你應(yīng)該升級z。
如果你以向后兼容的方式實現(xiàn)新功能,那么你將升級y,因為這就是所謂的次要版本。
另一方面,如果你實現(xiàn)了可能破壞現(xiàn)有API的新東西,你需要升級x,因為它是一個主要版本( Major )。想要了解更多請看后面的<更多須知>。
開始語義化的版本控制對應(yīng)用來說是非常重要的,當(dāng)然,讓版本升級就變成了一件看似不重要卻非常重要的事情,在我們開發(fā)過程中,或者你遇到過這樣的情況?
由于版本控制概念模糊或者忘記,build 完應(yīng)用都是隨便改的版本或者是完全忘記修改版本。
每次 build 完需要改版本太麻煩,懶得改。
基于這樣的場景下,我開發(fā)了這款自動版本升級管理工具 auto-vers
github: https://github.com/zerolty/au...
相同庫比較項目 | npm-auto-version | update-version | auto-vers |
---|---|---|---|
git tag | 支持 | 不支持 | 支持 |
自動更新 | 不支持 | 支持 | 支持 |
提示更新 | 不支持 | 不支持 | 支持 |
下面是我們需要手動改(前提需要知道改成什么,并且不能忘記修改?。?br>
下面是使用了auto-vers的方式。
擁有的功能[x] 更新 major, minor, patch, premajor, preminor, prepatch or prerelease
[x] 在更新時候提示選擇
[x] 支持git tag方式
[ ] 根據(jù)git commit的信息來自動推薦合適的版本
使用Node 和 Cli兩種引入方式。
npm i auto-vers -gCli 基礎(chǔ)模式
cat package.json { ... "version": "1.0.0" ... }
auto-vers -i
cat package.json { ... "version": "1.0.1" ... }確認(rèn)模式
auto-vers -i -c提示模式
auto-vers -t
如果你不想更新 , 你可以使用 ctrl + c 去停止。
提示和Git組合模式使用這個選項后,在你選擇一個版本后,會自動幫你提交一個commit,并且打上一個tag。
auto-vers -t -g直接更改模式
auto-vers 1.2.0
or
auto-vers -v 1.2.0
options
auto-vers 1.0.2 Auto update version for your application Usage: auto-vers [options]最佳實踐[[...]] Options -v --version Can update version directly. -i --inc --increment [ ] Increment a version by the specified level. Level can be one of: major, minor, patch, premajor, preminor , prepatch or prerelease. Default level is "patch". Only one version may be specified. -e --extra [ ] This is for prerelease extra data Such as "beta","alpha" -c --confirm Do not update the version directly, you can confirm. This is a safe mode. -t --tip Provide choice to you. If you don"t know how to update you can choose this option. -g --git Help you make a tag.(Make you have a git repo)
在你打包完你的項目同時運行這個命令是一個非常好的選擇。基礎(chǔ)的方式
"script": { "build": "babel ./src --out-dir ./dist", "tip": "npm run build && auto-vers -t", "version": "npm run build && auto-vers -t -g", }
在你寫好一段打包命令后,緊接著跟上auto-vers -t,將會給你提示需要升級至多少版本,這對你來說會有一定的指示意義。幫助你更好地區(qū)判斷你需要升級至什么版本。auto-vers -t -g 這個命令適合于你多帶帶發(fā)布一個版本,可以一鍵式的幫助你從修改 package.json -> git commit -> git tag -> git push origin [tagname] 整個流程。
中級的方式"script": { "build": "babel ./src --out-dir ./dist", "patch": "npm run build && auto-vers -i -c", "minor": "npm run build && auto-vers -i minor -c", "major": "npm run build && auto-vers -i major -c", "beta": "npm run build && auto-vers -i prerelease -c", }
這個方式針對熟悉這個模式的人,每次需要打包只需要執(zhí)行對應(yīng)的命令。(增加參數(shù)-c --confirm,這是一個安全的方式去升級,幫助你確認(rèn)是否升級正確,如果對你而言是一個繁瑣的步驟即可去掉。)
高級的方式git-hooks
如果你沒有注冊pre-commit和post-commit,可以直接移動進(jìn)你的.git/hooks目錄下
mv githook-*/* .git/hooks/
如果你本地存在hooks,將項目下的hook,手動添加到你的hook下
cat githook-*/pre-commit >> .git/hooks/pre-commit
當(dāng)你提交 commit 的時候,會自動跳出選擇界面,選擇后升級對應(yīng)的版本。 (注意:如果在你的程序中有相關(guān) commit 命令,請使用--no-verify來跳過此鉤子,否則將循環(huán)調(diào)用)
更多須知 為什么選擇SemVer因為不規(guī)范的版本號基本上沒有任何意義。從4.1.0 升級4.2? 好的。 為什么? 為什么不是5? 為什么不是4.1.1? 為什么不是4.11? 為什么不是4.1.0-aplha.0?更多技巧嚴(yán)格的指導(dǎo)原則有助于為版本號提供意義。例如,如果您看到版本1.3.37,那么您將知道這是第一個主要版本,但已經(jīng)有3個次要版本帶來了新功能。 但是,您還會注意到這是此次要版本中的第37個補丁,這意味著涉及很多錯誤(很少或很大)。
它還有助于管理依賴關(guān)系,"babel-cli": "~6.26.0", 我們引入了babel-cli, 可以得知他的版本是6.26.0,他會鎖定x,y 這是一種比較保守的方式, 根據(jù)規(guī)則可以得知,z的升級不會導(dǎo)致我們api重大的改變以及引入新的功能,。但是如果babel-cli不遵循 SemVer , 在升級z的時候引入了破壞性的變化,這會使得我們的應(yīng)用出現(xiàn)bug或者變得不可用。正是因為有了 SemVer 的規(guī)范,使得我們能夠放心地鎖定 x,y, 讓 z 可以自動升級,因為 z 的升級可能會修復(fù)一些小 bug 或者一些細(xì)節(jié)的改進(jìn), 在不破壞我們的應(yīng)用同時能夠?qū)σ阎猙ug進(jìn)行修復(fù)。
既然你已經(jīng)知道 SemVer 是什么以及自動更新的方法,那么講一些更新的時候注意事項吧。
開始于0.1.0
使用SemVer時需要注意的一點是它從0.1.0開始,而不是像我們想象的那樣從0.0.1開始。這是有道理的,因為我們不是從補丁開始,而是從一組功能開始,作為項目的初稿,因此版本為0.1.0。
在1.0.0之前只是開發(fā)階段
每當(dāng)你構(gòu)建一個新的軟件時,總會有一個迷茫階段,你一直在問自己:我什么時候應(yīng)該發(fā)布第一個正式的主要版本?
以下是一些幫助你回答這個問題的提示:如果您的應(yīng)用已經(jīng)在生產(chǎn)中使用或者用戶依賴于它,那么你應(yīng)該已經(jīng)達(dá)到了1.0.0。此外,如果你有打破當(dāng)前的API,這同樣表示你需要升級你的主版本號了。
否則,請記住1.0.0以下的版本基 本上是開發(fā)熱潮時期,你專注于完成你的功能。在1.0.0之前,你不應(yīng)該害怕任何破壞性的功能,這樣當(dāng)達(dá)到1.0.0時,它就會穩(wěn)定。
關(guān)于預(yù)發(fā)布pre-realease
在部署主要版本之前,你通常會經(jīng)歷大量需要一次又一次測試的工作,以確保一切正常。
使用SemVer,可以通過在版本中附加標(biāo)識符來定義預(yù)發(fā)布。 例如,版本1.0.0的預(yù)發(fā)行版可能是1.0.0-alpha.1。 然后,如果需要另一個預(yù)版本,它將變?yōu)?b>1.0.0-alpha.2,依此類推。
總結(jié)通過了上面的基礎(chǔ)介紹,如果你沒有使用 SemVer ,沒有理由不在你的下一個項目(或當(dāng)前項目?)上使用它。 它不僅有助于你的項目版本變得有意義,而且還有助于其他可能將你的項目用作依賴項的人。說了這么多,最終還是希望大家能夠更加規(guī)范地開發(fā)項目不僅幫助他人,而且有利于自己??赡芪议_發(fā)的這個項目不是那么完美,但是初衷是來提高大家規(guī)范的效率。有bug請多多指出,有功能上的問題也請直言不諱。
友情鏈接藍(lán)色的秋風(fēng)
無影er
https://medium.com/fiverr-eng...
https://www.sitepoint.com/sem...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/101259.html
摘要:年工程化協(xié)作開發(fā)棧最佳實踐我們將花半小時實戰(zhàn)擼一個包含,的標(biāo)準(zhǔn)的用于工程協(xié)作的包開發(fā)棧。使用腳手架,秒鐘構(gòu)建可自由配置的開發(fā)棧。分別表示詢問彈窗自動執(zhí)行任務(wù)執(zhí)行任務(wù)后操作。 發(fā)起一個github/npm工程協(xié)作項目,門檻太高了??! 最基礎(chǔ)的問題,你都要花很久去研究: 如何在項目中全線使用es2017代碼? 答案是babel 如何統(tǒng)一所有協(xié)作者的代碼風(fēng)格? 答案是eslint + pr...
摘要:前言本文主要是有關(guān)前端方面知識按照目前的認(rèn)知進(jìn)行的收集歸類概括和整理,涵蓋前端理論與前端實踐兩方面。 前言:本文主要是有關(guān)前端方面知識按照 XX 目前的認(rèn)知進(jìn)行的收集、歸類、概括和整理,涵蓋『前端理論』與『前端實踐』兩方面。本文會告訴你前端需要了解的知識大致有什么,看上去有很多,但具體你要學(xué)什么,還是要 follow your heart & follow your BOSS。 初衷...
摘要:前言本文主要是有關(guān)前端方面知識按照目前的認(rèn)知進(jìn)行的收集歸類概括和整理,涵蓋前端理論與前端實踐兩方面。 前言:本文主要是有關(guān)前端方面知識按照 XX 目前的認(rèn)知進(jìn)行的收集、歸類、概括和整理,涵蓋『前端理論』與『前端實踐』兩方面。本文會告訴你前端需要了解的知識大致有什么,看上去有很多,但具體你要學(xué)什么,還是要 follow your heart & follow your BOSS。 初衷...
摘要:前言本文主要是有關(guān)前端方面知識按照目前的認(rèn)知進(jìn)行的收集歸類概括和整理,涵蓋前端理論與前端實踐兩方面。 前言:本文主要是有關(guān)前端方面知識按照 XX 目前的認(rèn)知進(jìn)行的收集、歸類、概括和整理,涵蓋『前端理論』與『前端實踐』兩方面。本文會告訴你前端需要了解的知識大致有什么,看上去有很多,但具體你要學(xué)什么,還是要 follow your heart & follow your BOSS。 初衷...
摘要:日志規(guī)范一般前端開發(fā)同學(xué),對日志其實不太敏感,畢竟前端大多數(shù)情況下,不太關(guān)心日志。本文主要梳理了目前我們團(tuán)隊在開發(fā)中日志方面存在的問題,以及通過統(tǒng)一日志規(guī)范,希望達(dá)到什么樣的效果。日志格式字段日志格式統(tǒng)一采用,便于解析處理。nodejs 日志規(guī)范 一般前端開發(fā)同學(xué),對日志其實不太敏感,畢竟前端大多數(shù)情況下,不太關(guān)心日志。即使有,也可能調(diào)用一些第三方的統(tǒng)計,比如百度統(tǒng)計或者別的等。在 Node...
閱讀 2523·2021-10-14 09:42
閱讀 1156·2021-09-22 15:09
閱讀 3561·2021-09-09 09:33
閱讀 3042·2021-09-07 09:59
閱讀 3653·2021-09-03 10:34
閱讀 3574·2021-07-26 22:01
閱讀 2840·2019-08-30 13:06
閱讀 1220·2019-08-30 10:48