給公司寫的composer包開發(fā)的規(guī)范

版本號的規(guī)范

參考

  1. 語義化版本 2.0.0
  2. Versions and constraints
  3. 基本用法

版本格式

主版本號.次版本號.修訂號

版本號遞增規(guī)則

  • 主版本號:當(dāng)你做了不兼容的 API 修改
  • 次版本號:當(dāng)你做了向下兼容的功能性新增
  • 修訂號:當(dāng)你做了向下兼容的問題修正
  • 先行版本號及版本編譯元數(shù)據(jù)可以加到“主版本號.次版本號.修訂號”的后面,作為延伸。

發(fā)布 1.0.0 版本的時機

  1. 被用于正式環(huán)境
  2. 如果有個穩(wěn)定的 API 被使用者依賴
  3. 如果很擔(dān)心向下兼容的問題

總而言之,由于0.x版本在機制和語義上和大于1.0的版本有一定差異,容易產(chǎn)生誤用,被用于生產(chǎn)環(huán)境的包的版本號都必須>=1.0

composer.lock的規(guī)范

開發(fā)應(yīng)用程序必須提交 composer.lock 文件到 git 版本庫中

這會確保每一個人 —— 你、你的合作伙伴、你的 CI 服務(wù)器以及你的產(chǎn)品服務(wù)器 —— 所運行的應(yīng)用程序擁有相同依賴的版本。

開發(fā)庫不需要提交composer.lock

該文件對使用該庫的項目不會有任何影響,無法達到限制版本的目的

composer.json中依賴版本的規(guī)范

不允許在項目中使用不限定版本的方式

由于主版本的升級可能伴隨著api的不兼容,如果require * 這種不限定版本的方式很可能帶來不兼容的隱患,所以推薦至少鎖定主版本號

例如

目前使用xxx/service的1.0.0版本,則請寫~1.0或者^1.0.0,這樣效果等同于>= 1.0且< 2.0,如果第三方使用時引用了xxx/service的2.0版本且引用了你的依賴1.0的版本,則會安裝出錯,立刻引起注意

如果 require * 則安裝會正常進行,但是可能發(fā)生使用時的意外(api不兼容)

版本號鎖定中^和~的重要區(qū)別

~的作用

~ 的作用是允許表達式中最后一位變到最大值

符號 效果
~0.0.1 >= 0.0.1 且 < 0.1.0
~0.1.1 >= 0.1.1 且 < 0.2.0
~0.1 >= 0.1.0 且 < 1.0.0
~1.1 >= 1.1 且 < 2.0.0

^的作用

++^ 鎖定的是x.y.z版本號中從左到右非0的第一個版本號的版本++

比如^ 1.2.3 為鎖定主版本號1;而^ 0.1.2則為鎖定0.1;^ 0.0.3則為鎖定0.0.3版本

所以^ 的行為在>=1.0和< 1.0的情況下存在特殊情況,使用時請?zhí)貏e注意,

  1. 版本大于1.0.0的情況

^ 鎖定不允許變的第一位

符號 效果
^ 1.2 >= 1.2 且 < 2.0
^ 1.3.1 >= 1.3.1 且 < 2.0
  1. 版本為0.x的情況

^鎖定的是從左到右非0的第一個版本號的版本

符號 效果
^0.0.1 >= 0.0.1 且 < 0.0.2
^0.1.1 >= 0.1.1 且 < 0.2.0
^0.1 >= 0.1.0 且 < 0.2.0
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容