發布 0.56
眾所期待的 React Native 0.56 版本現已發布 🎉。這篇部落格文章重點介紹了這個新版本中引入的一些變更。我們也想藉此機會說明自三月以來我們一直忙於處理的事情。
破壞性變更的兩難,或者,「何時發布?」
《貢獻者指南》說明了所有 React Native 變更所經歷的整合流程。這個專案由許多不同的工具組成,需要協調和持續支援,以保持一切正常運作。再加上充滿活力的開源社群為專案做出貢獻,您將感受到其規模之龐大。
鑑於 React Native 令人印象深刻的採用率,破壞性變更必須謹慎進行,而且這個過程並不如我們希望的那麼順利。我們決定跳過四月和五月的發布,以便核心團隊整合和測試一組新的破壞性變更。沿途使用了專門的社群溝通管道,以確保 2018 年 6 月 (0.56.0
) 版本對於那些耐心等待穩定版本的人來說,盡可能輕鬆地採用。
0.56.0
版本完美嗎?不,就像市面上的所有軟體一樣:但我們已經達到了一個臨界點,在「等待更多穩定性」與「測試產生了成功的結果,因此我們可以向前推進」之間權衡後,我們認為已經準備好發布它了。此外,我們也意識到 一些 問題 在最終的 0.56.0
版本中尚未解決。大多數開發人員升級到 0.56.0
應該不會有問題。對於那些因上述問題而受阻的人,我們希望在我們的討論中看到您,並且我們期待與您合作解決這些問題。
您可以將 0.56.0
視為朝向更穩定框架的基礎構建模組:可能需要一兩週的廣泛採用才能消除所有邊緣案例,但這將帶來更出色的 2018 年 7 月 (0.57.0
) 版本。
在本節的結尾,我們要感謝 總共 67 位貢獻者參與了 818 次提交 (!),這將有助於讓您的應用程式更加出色 👏。
現在,無需贅言...
重大變更
Babel 7
您可能知道,轉譯器工具 Babel 讓我們能夠使用 JavaScript 的最新和最棒的功能,即將升級到 v7。由於這個新版本帶來了一些重要的變更,我們認為現在是升級的好時機,讓 Metro 能夠 充分利用其改進。
如果您在升級時遇到問題,請參閱與其相關的文件章節。
Android 支援現代化
在 Android 上,許多周邊工具已變更。我們已更新至 Gradle 3.5、Android SDK 26、Fresco 1.9.0 和 OkHttp 3.10.0,甚至將 NDK API 目標設為 API 16。這些變更應該會順利進行,並加快建置速度。更重要的是,它將幫助開發人員符合下個月生效的 新的 Play 商店要求。
關於這一點,我們要特別感謝 Dulmandakh 提交了許多 PR,使這一切成為可能 👏。
在這個方向上還有更多步驟需要採取,您可以關注 專門的問題 (以及 JSC 的附帶問題) 中有關更新 Android 支援的未來規劃和討論。
新的 Node、Xcode、React 和 Flow – 哇!
Node 8 現在是 React Native 的標準。實際上它已經在測試中,但隨著 Node 6 進入維護模式,我們已經全力以赴。React 也已更新至 16.4,帶來了大量的修復。
我們正在停止支援 iOS 8,使 iOS 9 成為可以支援的最舊 iOS 版本。我們不認為這會成為問題,因為任何可以執行 iOS 8 的裝置都可以升級到 iOS 9。此變更使我們能夠移除為執行 iOS 8 的舊裝置實作的鮮少使用的程式碼。
持續整合工具鏈已更新為使用 Xcode 9.4,確保所有 iOS 測試都在 Apple 提供的最新開發人員工具上執行。
我們已升級到 Flow 0.75,以使用許多開發人員讚賞的新錯誤格式。我們也為更多組件建立類型。如果您尚未在專案中強制執行靜態類型,請考慮使用 Flow 在編碼時而不是在執行階段識別問題。
以及許多其他事項...
例如,YellowBox 已被取代為新的實作,這使得除錯變得更好。
如需完整的版本說明,請參閱此處的完整變更日誌。並請記住密切關注升級指南,以避免升級到這個新版本時發生問題。
最後,請注意:從本週開始,React Native 核心團隊將恢復舉行每月會議。我們將確保讓所有人隨時掌握會議內容,並確保在未來的會議中隨時掌握您的意見回饋。
祝大家編碼愉快!
Lorenzo、Ryan 和整個 React Native 核心團隊
附註:一如既往,我們要提醒大家,由於仍在進行許多變更,React Native 仍處於 0.x 版本 - 因此請記住,升級時可能仍然會發生崩潰或損壞。在處理問題和提交 PR 時,請互相幫助 - 並記住遵守強制執行的行為準則:螢幕的另一端始終是真人。