簡體   English   中英

升級 react-native 項目的最佳方式

[英]Best way to upgrade react-native project

我有一個關於升級 react-native 版本的問題。 我們有一些升級選擇,但我不知道有什么區別。

1) react-native upgrade

2) react-native-git-upgrade

3) npm install react-native@latest --save然后react-native run-androidreact-native run-ios

我對我的項目使用了第三種方式,因為我需要在 android 文件夾中維護我的文件,如 MainActivity.java、MainApplication.java、AndroidManifest 等。

你能描述一下這些方式之間的區別嗎?

TL; 博士

首先,您應該查看從 facebook升級最新選項

如果這些都不適合你:

  • 在 package.json 中增加 react-native 的版本
  • 運行npm install (或 yarn 如果你正在使用它)
  • 運行react-native upgrade或可能的react-native upgrade --legacy

說明

在這里,我將介紹您詢問的每個升級選項。

1) npm install react-native@latest --save然后react-native run-android or react-native run-ios

您可能知道,此處的run-*命令不執行任何類型的升級。

同時, npm install --save <library>@<version>只是將庫放入 package.json 或更新現有庫版本的命令。 這是升級 package.json 中任何典型庫版本的方式。 如果這就是升級RN的全部內容,那么社區中就不會對升級的難度大驚小怪了。 還有很多工作要做。

如果這是您升級的唯一步驟,新版本的 react-native 將下載到 node_modules,但它應該會失敗並抱怨很多事情:

  • react依賴也需要升級
  • 你的iosandroid目錄下的文件不會處於最新的react-native期望的狀態。 例如,如果您從 react-native 0.52 升級到 0.59,您將擁有 gradle 2,而您的 react-native 庫需要 gradle 4。
  • 您的其他依賴項可能不適用於較新版本的 RN。 例如,這是我升級后npm install發出的警告:

npm WARN react-native-markdown-renderer@3.2.8 requires a peer of react-native@^0.50.4 but none is installed. You must install peer dependencies yourself.

如您所見,我還需要升級 native-markdown-renderer,因為它需要 RN 0.50,但我已升級到 0.59。 某些庫可能會在這種不匹配的狀態下工作,但這是您要承擔的風險。

2) react-native-git-upgrade

據我了解,RN 團隊對這個產品有太多問題,不再希望我們使用它。 我猜這就是為什么它對我們大多數人根本不起作用。

3) react-native upgrade

這將更新您的 package.json 中的 react-native 版本,但隨后還會引導您完成一組引導式 CLI 提示,因為它會修改您的iosandroid目錄中的文件。 但是本指南將如何處理新傳入文件和現有文件之間的沖突? 您可能想要保留一些更改。

據說較新版本的react-native upgrade允許您執行差異和合並,但我還沒有看到。 當我運行它時,它打算用一個新文件來破壞我的整個舊文件,並且它向我顯示了我本地文件系統上到“新”版本的路徑,該“新”版本將覆蓋我的舊文件。 所以我使用我自己的比較工具來比較新傳入的文件和我現有的文件。 如果您缺少 diff 工具,我會使用p4Merge 因此,當您瀏覽 CLI 指南時,只需在現有文件和它給您的新文件的路徑之間做一個差異,然后一一進行,為您的文件添加必要的新行。 如果您進行了一些更改,請對提示回答“否”,以便您可以保留舊文件(以及您剛剛進行的修改)。 如果您沒有任何值得保留在文件中的內容,請回答“是”,然后讓指南簡單地覆蓋和破壞您的舊文件。

當這個命令完成后,你的iosandroid目錄將被更新。 例如,gradle 將從 Gradle 2 升級到 Gradle 4。

您可能會遇到我所做的錯誤,這會導致此命令不斷將您升級到舊版本而不是最新版本。 在這種情況下,您需要運行: react-native upgrade --legacy

如果它是一個較小的項目,只需使用 'npx react-native init yourprojectname --version X.XX.Xt' 創建一個新的 React Native 項目,然后將舊項目的源文件夾復制到新項目中。 然后嘗試使用“npx react-native run-android”或“npx react-native run-ios”在android或ios中運行它。 如果有任何運行時錯誤但沒有構建錯誤,則相應地更新 npm 包。 注意:這適用於小型項目,因為大型項目可能包含許多 3rd 方依賴項。 :)

我嘗試了react-native-git-upgrade然后刪除了node_modules然后npm install它對我node_modules

https://facebook.github.io/react-native/docs/upgrading

其他答案中提到的升級方法在許多情況下都有效,但我遇到了許多其他錯誤太多的情況。

根據我的經驗,在這些情況下,最好的方法是在新版本中創建一個新項目,並將源文件復制到新項目中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM