Angular 發(fā)布實(shí)踐

2022-07-21 10:03 更新

Angular 的版本與發(fā)布

你肯定希望 Angular 框架具有穩(wěn)定性(stability)。穩(wěn)定性可以確保組件與庫(kù)、教程、工具和現(xiàn)有實(shí)踐不會(huì)突然被棄用。穩(wěn)定性是讓基于 Angular 的生態(tài)系統(tǒng)變得繁榮的基石。

我們也和你一樣希望 Angular 能持續(xù)演進(jìn)。我們會(huì)努力確保這些你用于構(gòu)建應(yīng)用的基礎(chǔ)能得到持續(xù)的改進(jìn),并讓你能及時(shí)同步到 Web 生態(tài)系統(tǒng)的其它部分的最新進(jìn)展,用戶需求也是一樣。

本文檔包含一些我們所遵循的實(shí)踐,它讓我們能為你提供一個(gè)前沿的應(yīng)用開發(fā)平臺(tái),同時(shí)兼顧穩(wěn)定性。我們會(huì)努力確保將來(lái)的變化總是以一種可預(yù)期的方式引入。我們希望每個(gè) Angular 用戶都明白我們將在何時(shí)添加以及如何添加新特性,并且為那些將要移除的、準(zhǔn)備棄用的特性提前做好準(zhǔn)備。

Angular 的版本

Angular 的版本號(hào)表明本次發(fā)布中所引入的變更級(jí)別。它使用語(yǔ)義化版本號(hào)來(lái)幫助你理解升級(jí)到新版本時(shí)的潛在影響。

Angular 的版本號(hào)包括三個(gè)部分:?major.minor.patch?。比如,版本 7.2.11 表示主版本號(hào)是 7,小版本號(hào)是 2,補(bǔ)丁版本號(hào)是 11。

版本號(hào)是根據(jù)本次發(fā)布中包含的變更的級(jí)別進(jìn)行遞增的。

變更級(jí)別

詳情

主版本

包含重要的新特性,其中的部分特性在升級(jí)時(shí)會(huì)需要由開發(fā)人員提供少量的協(xié)助才能完成。當(dāng)升級(jí)到新的主版本時(shí),你可能需要運(yùn)行升級(jí)腳本、重構(gòu)代碼、運(yùn)行其它測(cè)試以及學(xué)習(xí)新的 API。

小版本

包含新的小型特性。小版本是完全向后兼容的,在升級(jí)期間,不需要開發(fā)人員提供協(xié)助,但是你可以(可選的)修改你的應(yīng)用和庫(kù),來(lái)使用本次發(fā)布中新增的 API、特性和能力。我們會(huì)擴(kuò)展庫(kù)的對(duì)等依賴(peer dependency)中的小版本號(hào)范圍來(lái)更新庫(kù)同級(jí),但并不需要你的項(xiàng)目也更新那些依賴。

補(bǔ)丁版本

風(fēng)險(xiǎn)最低的、修 BUG 的版本。在升級(jí)期間完全不需要開發(fā)人員的協(xié)助。

注意:
從 Angular 版本 7 開始,Angular Core 和 CLI 的主要版本已對(duì)齊。這意味著在開發(fā) Angular 應(yīng)用程序時(shí)使用的 ?@angular/core? 和 CLI 的版本必須相同。

所支持的升級(jí)路徑

你可以 ?ng update? 到任何版本的 Angular,前提是滿足以下條件:

  • CLI 支持你要更新到的版本。
  • 你要更新“自”的版本是受支持的主要版本之一。

比如,你可以從版本 11 更新到版本 12,前提是版本 12 仍受支持。如果要跨多個(gè)主要版本進(jìn)行更新,請(qǐng)每次更新一個(gè)主要版本。比如,要從版本 10 更新到版本 12 時(shí):

  • 從版本 10 更新到版本 11。
  • 從版本 11 更新到版本 12。

預(yù)覽發(fā)布

我們還會(huì)通過(guò)提供 Next 版和 RC(候選發(fā)布)版來(lái)讓你預(yù)覽每個(gè)即將到來(lái)的大版本和小版本。

預(yù)發(fā)布類型

詳情

Next

這是正在活躍開發(fā)和測(cè)試中的發(fā)布。Next 版的發(fā)布標(biāo)簽帶有 -next 后綴,比如 8.1.0-next.0。

RC 候選發(fā)布版

一個(gè)特性已經(jīng)完成,正在進(jìn)行最終測(cè)試的版本。RC 版的發(fā)布標(biāo)簽帶有 -rc 標(biāo)志,比如 8.1.0-rc.0

發(fā)布頻率

我們會(huì)定期發(fā)布新版本,以便隨著 Angular 的不斷演進(jìn),你可以提前計(jì)劃并協(xié)調(diào)這些升級(jí)工作。

這些日期僅供一般性參考,如有更改,恕不另行通知。

通常的發(fā)布周期如下:

  • 每 6 個(gè)月一個(gè)主版本
  • 每個(gè)主版本中包含 1~3 個(gè)小版本
  • 差不多每周一個(gè)發(fā)行版或預(yù)發(fā)行版(?next ?或 ?rc?)的補(bǔ)丁版本

這種發(fā)布的節(jié)奏能讓渴望新功能的開發(fā)者在這些功能開發(fā)開發(fā)完成并通過(guò)我們的代碼審查和集成測(cè)試流程后立即就可以使用,同時(shí)為那些喜歡在新功能經(jīng)過(guò) Google 和其他使用預(yù)發(fā)布版本的開發(fā)人員的驗(yàn)證后才采納的生產(chǎn)環(huán)境用戶,保持平臺(tái)的穩(wěn)定性和可靠性。

支持策略與計(jì)劃

這些日期僅供一般性參考,如有更改,恕不另行通知。

所有主版本的典型支持周期都是 18 個(gè)月。

支持階段

支持時(shí)間

詳情

活躍

6 個(gè)月

會(huì)定期發(fā)布更新和補(bǔ)丁

LTS 長(zhǎng)期支持版

12 個(gè)月

只會(huì)發(fā)布關(guān)鍵性修復(fù)和安全補(bǔ)丁。

下表中提供了目前受支持的 Angular 版本的狀態(tài)。

版本

狀態(tài)

發(fā)布

停止活躍

LTS 結(jié)束

^14.0.0

活躍

2022-06-02 2022-12-02 2023-12-02
^13.0.0

活躍

2021-11-04 2022-06-02 2023-05-04
^12.0.0 LTS 2021-05-12 2021-11-12 2022-11-12

不再為 v2 到 v11 版提供支持。

LTS 修復(fù)

作為一個(gè)通用的規(guī)則,如果解決了下列問(wèn)題之一,就會(huì)考慮對(duì) LTS 版本進(jìn)行修復(fù):

  • 一個(gè)新發(fā)現(xiàn)的安全漏洞。
  • LTS 發(fā)布以后,由于第三方更改引起的回歸性問(wèn)題,比如瀏覽器的新版本。

棄用策略

"重大變更"(比如移除特定的 API 和特性)有時(shí)候是必須的,比如創(chuàng)新、讓最佳實(shí)踐與時(shí)俱進(jìn)、變更依賴關(guān)系甚至來(lái)自 Web 平臺(tái)自身的變化。

要讓這些轉(zhuǎn)變盡可能的簡(jiǎn)單,我們會(huì)給你下列保證:

  • 我們會(huì)盡量減少重大變更的數(shù)量,并盡可能提供遷移工具。
  • 我們會(huì)遵循這里所講的棄用策略,讓你有時(shí)間把應(yīng)用升級(jí)到最新的 API 和最佳實(shí)踐。

為了保證你能有充足的時(shí)間和清晰的路徑進(jìn)行升級(jí),我們制定了如下棄用策略:

棄用階段

詳情

宣布棄用

我們會(huì)在變更記錄中宣布要棄用的那些 API 和特性。啟用的 API 在文檔中會(huì)顯示成帶刪除線的樣式。當(dāng)我們宣布一項(xiàng)棄用時(shí),我們還會(huì)宣布一個(gè)建議的升級(jí)路徑。為便于查找,我們?cè)跅売昧斜碇邪粋€(gè)關(guān)于棄用 API 和特性的匯總表。

棄用階段

當(dāng) API 或特性已棄用時(shí),它在接下來(lái)的兩個(gè)主版本中仍然會(huì)存在。再往后,棄用的 API 和特性將會(huì)進(jìn)入候選棄用狀態(tài)??赡軙?huì)在任何一次發(fā)布中宣布棄用,但是只會(huì)在主版本中移除已棄用的 API 或特性。除非已棄用的 API 或特性已被移除,否則我們?nèi)匀粫?huì)根據(jù) LTS 支持策略來(lái)維護(hù)它,也就是說(shuō),只會(huì)修復(fù)嚴(yán)重問(wèn)題和安全問(wèn)題。

npm 依賴

在主版本中,我們只會(huì)更新那些需要修改你的應(yīng)用的那些 npm 依賴項(xiàng)。在次要版本中,我們會(huì)通過(guò)擴(kuò)展受支持版本范圍的方式來(lái)更新對(duì)等依賴(peerDependencies),但在下一個(gè)主版本到來(lái)之前,不會(huì)強(qiáng)制要求你升級(jí)它們。這意味著,在次要版本中,Angular 應(yīng)用和庫(kù)中,npm 依賴項(xiàng)的更新是可選的。

公共 API

Angular 是很多包、子項(xiàng)目和工具的集合。為了防止你意外使用私有 API(這樣你才能更清楚的理解哪些 API 會(huì)被這里所說(shuō)的實(shí)踐所覆蓋),我們對(duì)公開 API 包含以及不包含哪些 API 進(jìn)行了文檔化。要了解詳情,參閱 Angular 的公共 API

任何對(duì)公共 API 的修改都適用于上述這些版本、支持和棄用策略。

開發(fā)者預(yù)覽版

有時(shí)我們會(huì)在“開發(fā)者預(yù)覽”標(biāo)簽下介紹新的 API。這些是功能齊全且經(jīng)過(guò)優(yōu)化的 API,但我們還沒(méi)有準(zhǔn)備好根據(jù)正常的棄用政策來(lái)穩(wěn)定它們。

這可能是因?yàn)槲覀兿M诜€(wěn)定之前從真實(shí)應(yīng)用程序收集反饋,或者因?yàn)橄嚓P(guān)的文檔或遷移工具不完全完整。

本文檔中描述的政策和實(shí)踐不適用于標(biāo)記為 Developer Preview 的 API。此類 API 可以隨時(shí)更改,即使在框架的新補(bǔ)丁版本中也是如此。團(tuán)隊(duì)?wèi)?yīng)該自己決定使用開發(fā)者預(yù)覽版 API 的好處是否值得冒險(xiǎn)破壞我們正常使用語(yǔ)義版本控制之外的更改。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)