[英]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-android
或react-native run-ios
我對我的項目使用了第三種方式,因為我需要在 android 文件夾中維護我的文件,如 MainActivity.java、MainApplication.java、AndroidManifest 等。
你能描述一下這些方式之間的區別嗎?
如果這些都不適合你:
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
依賴也需要升級ios
和android
目錄下的文件不會處於最新的react-native
期望的狀態。 例如,如果您從 react-native 0.52 升級到 0.59,您將擁有 gradle 2,而您的 react-native 庫需要 gradle 4。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 提示,因為它會修改您的ios
和android
目錄中的文件。 但是本指南將如何處理新傳入文件和現有文件之間的沖突? 您可能想要保留一些更改。
據說較新版本的react-native upgrade
允許您執行差異和合並,但我還沒有看到。 當我運行它時,它打算用一個新文件來破壞我的整個舊文件,並且它向我顯示了我本地文件系統上到“新”版本的路徑,該“新”版本將覆蓋我的舊文件。 所以我使用我自己的比較工具來比較新傳入的文件和我現有的文件。 如果您缺少 diff 工具,我會使用p4Merge 。 因此,當您瀏覽 CLI 指南時,只需在現有文件和它給您的新文件的路徑之間做一個差異,然后一一進行,為您的文件添加必要的新行。 如果您進行了一些更改,請對提示回答“否”,以便您可以保留舊文件(以及您剛剛進行的修改)。 如果您沒有任何值得保留在文件中的內容,請回答“是”,然后讓指南簡單地覆蓋和破壞您的舊文件。
當這個命令完成后,你的ios
和android
目錄將被更新。 例如,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
!
其他答案中提到的升級方法在許多情況下都有效,但我遇到了許多其他錯誤太多的情況。
根據我的經驗,在這些情況下,最好的方法是在新版本中創建一個新項目,並將源文件復制到新項目中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.