詳細查看我們的版本控制策略和實現(xiàn)。
從 2.0.0 版開始,Electron 遵循 SemVer 規(guī)范。以下命令將安裝最新穩(wěn)定版的 Electron:
npm | Yarn |
|
|
現(xiàn)有項目更新到最新的穩(wěn)定版本:
npm | Yarn |
|
|
下面概述了我們的 1.x 策略的幾個主要變化。每項更改都旨在滿足開發(fā)人員/維護人員和應(yīng)用程序開發(fā)人員的需求和優(yōu)先級。
嚴(yán)格使用 SemVer 規(guī)范
-beta
標(biāo)簽main
分支沒有版本信息,只有穩(wěn)定分支會包含版本信息。我們將詳細介紹 git 分支是如何工作的,npm 標(biāo)記是如何工作的,開發(fā)人員應(yīng)該看到什么,以及如何能夠支持更改。
下面是一個表格,明確地將變化的類型映射到它們對應(yīng)的 SemVer 類別 (例如Major,Minor,Patch)。
Major 版本增量 | Minor 版本增量 | Patch 版本增量 |
---|---|---|
Electron 突破性 API 變更 | Electron 無突破性 API 變更 | Electron bug 修復(fù) |
Node.js 重大版本更新 | Node.js 次要版本更新 | Node.js patch 版本更新 |
Chromium 版本更新 | 修復(fù)相關(guān)的 chromium 補丁 |
有關(guān)詳細信息,請參閱 語義版本控制 2.0.0 規(guī)范。
請注意,大多數(shù) Chromium 更新都將被認(rèn)為是破壞性的。可以向后移植的修復(fù)程序可能會被挑選為補丁程序。
Stabilization 分支是與 main 并行運行的分支,僅接受與安全性或穩(wěn)定性相關(guān)的精心挑選的提交。這些分支永遠不會合并回主分支。
自 Electron 8 以來,穩(wěn)定分支始終為 marjar 版本,并且根據(jù)以下模板 $MAJOR-x-y
例如: 8-x-y
。 在此之前,我們使用 minor 版本行,并將它們命名為 $MAJOR-$MINOR-x
例如: 2-0-x
.
我們允許同時存在多個穩(wěn)定分支,每個支持的版本一個。
Electron 項目將不支持較舊的線路,但其他團隊可以擁有所有權(quán)并自行向后移植穩(wěn)定性和安全修復(fù)程序。我們不鼓勵這樣做,但是認(rèn)識到它使得許多應(yīng)用程序開發(fā)人員的生活更輕松。
開發(fā)人員想知道哪個版本可以 安全 使用。 即使是簡單的功能也會使應(yīng)用程序變得復(fù)雜。 同時,鎖定到一個固定的版本是很危險的,因為你忽略了自你的版本以來可能出現(xiàn)的安全補丁和錯誤修復(fù)。 我們的目標(biāo)是在 package.json
中允許以下標(biāo)準(zhǔn)的 semver 范圍:
~ 2.0. 0
只接受您的 2.0.0
版本的穩(wěn)定性或安全性相關(guān)的修復(fù)程序。^ 2.0. 0
可允許不破壞性的 合理穩(wěn)定 功能以及安全性和 bug 修復(fù)。第二點重要的是使用 ^
的應(yīng)用程序仍然能夠期望合理的穩(wěn)定性水平。 為了達到這個目的,SemVer允許使用一個 pre-release 標(biāo)識 來表示一個特定的版本還不夠 安全 或 穩(wěn)定。
無論你選擇什么,你將定期不得不在 package.json
中打破版本,因為突破性變更是 Chromium 的一個常態(tài)。
過程如下:
所有新的主要和次要版本系列都以 beta.N 的 SemVer 預(yù)發(fā)布標(biāo)簽指示的 beta 系列開始,例如2.0.0-beta.1。在第一個測試版之后,后續(xù)的測試版必須滿足以下所有條件:
2.0.0-beta.2
。2.0.0-beta.1
. 在第一個穩(wěn)定之后,所有的變化都必須落后兼容的 bug 或安全修復(fù)。2.0.1
。特別地,上述步驟意味著:
在 Beta 周期的大多數(shù)時間點,承認(rèn)功能標(biāo)記的更改不會改變現(xiàn)有代碼路徑是可以的。用戶可以在他們的應(yīng)用程序中明確啟用這些標(biāo)志。
在 Beta 周期的第 3 周之后承認(rèn)任何類型的功能都是 沒有很好的理由。
對于每個主要和次要的顛覆,你都應(yīng)該像以下示例一樣進行操作:
2.0.0-beta.1
2.0.0-beta.2
2.0.0-beta.3
2.0.0
2.0.1
2.0.2
圖片中的生命周期示例:
2.0.0-beta.1
。
2.0.0
下作為非 beta 版本再次被發(fā)布。
幾個不同的 SemVer 范圍將如何接收新版本的示例:
所有受支持的發(fā)布行都將接受外部拉取請求,以向后移植先前合并到主版本的修復(fù)程序,盡管對于某些較舊的受支持行,這可能視具體情況而定。所有圍繞發(fā)布線向后移植的有爭議的決定將由發(fā)布工作組作為議程項目在他們提出向后移植 PR 的那一周的每周會議上解決。
功能標(biāo)志是 Chromium 的一種常見的做法, 在網(wǎng)絡(luò)開發(fā)生態(tài)系統(tǒng)中得到了很好的確立。 在 Electron 環(huán)境中, 功能標(biāo)志或 軟分支 必須具有以下屬性:
所有拉取請求都必須遵守常規(guī)提交規(guī)范,總結(jié)如下:
BREAKING CHANGE:
開頭。feat:
開頭。 fix:
開頭。electron/electron 存儲庫還強制執(zhí)行 squash 合并,因此您只需要確保您的 pull request 具有正確的標(biāo)題前綴。
主分支將始終在其 package.json 中包含下一個主要版本 X.0.0-nightly.DATE。
發(fā)布分支永遠不會合并回主分支。
package.json
中包含正確的版本.一旦一個主要的發(fā)布分支被削減,main 必須被撞到下一個主要的(即 main 總是被版本化為下一個理論上的發(fā)布分支)。
小于 2.0 的 Electron 版本編號并不遵循 SemVer 規(guī)范: major 版本對應(yīng)最終用戶 API 的變更, minor 版本更新對應(yīng) Chromium 的主版本更新, patch 版本更新會帶來新功能和 bug 修復(fù)。 雖然方便開發(fā)人員合并功能,但卻為面向客戶端應(yīng)用程序的開發(fā)人員帶來了麻煩。Slack、Teams、Skype、VS Code 和 GitHub Desktop 等主要應(yīng)用程序的 QA 測試周期可能很長,穩(wěn)定性是非常需要的結(jié)果。嘗試吸收錯誤修復(fù)時,采用新功能的風(fēng)險很高。
以下是 1.x 策略的一個例子:
使用 1.8.1
開發(fā)的應(yīng)用程序無法吸收 1.8.2
的功能,或者通過反向移植修復(fù)和維護新的發(fā)行版,無法采用 1.8.3
錯誤修復(fù)。
更多建議: