Перейти к содержанию

Обновление до новых версий

Обновление до новых версий React Native даст вам доступ к большему количеству API, представлений, инструментов разработчика и других преимуществ. Обновление требует небольших усилий, но мы стараемся сделать его простым для вас.

Экспо-проекты

Обновление вашего проекта Expo до новой версии React Native требует обновления версий пакетов react-native, react и expo в файле package.json. Expo предоставляет команду upgrade для обновления этих и любых других известных зависимостей. Смотрите Upgrading Expo SDK Walkthrough для получения актуальной информации об обновлении вашего проекта.

Проекты React Native

Поскольку типичные проекты React Native состоят из проекта Android, проекта iOS и проекта JavaScript, обновление может быть довольно сложным. В настоящее время существует два способа обновления проекта React Native: с помощью React Native CLI или вручную с помощью Upgrade Helper.

React Native CLI

В React Native CLI есть команда upgrade, которая обеспечивает одношаговую операцию обновления исходных файлов с минимальным количеством конфликтов, она использует проект rn-diff-purge, чтобы выяснить, какие файлы нужно создать, удалить или изменить.

1. Выполните команду upgrade

Команда upgrade работает поверх Git'а, используя git apply с трехсторонним слиянием, поэтому для ее работы необходимо использовать Git, если вы не используете Git, но все еще хотите использовать это решение, вы можете посмотреть, как это сделать в разделе Troubleshooting.

Выполните следующую команду, чтобы начать процесс обновления до последней версии:

1
npx react-native upgrade

Вы можете указать версию React Native, передав аргумент, например, для обновления до 0.61.0-rc.0 выполнить:

1
npx react-native upgrade 0.61.0-rc.0

Проект обновляется с помощью git apply с трехсторонним слиянием, может случиться так, что вам потребуется разрешить несколько конфликтов после завершения обновления.

2. Разрешить конфликты

Конфликтующие файлы включают разделители, которые ясно показывают, откуда происходят изменения. Например:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
13B07F951A680F5B00A75B9A /* Release */ = {
  isa = XCBuildConfiguration;
  buildSettings = {
    ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
<<<<<<< ours
    CODE_SIGN_IDENTITY = "iPhone Developer";
    FRAMEWORK_SEARCH_PATHS = (
      "$(inherited)",
      "$(PROJECT_DIR)/HockeySDK.embeddedframework",
      "$(PROJECT_DIR)/HockeySDK-iOS/HockeySDK.embeddedframework",
    );
=======
    CURRENT_PROJECT_VERSION = 1;
>>>>>>> theirs
    HEADER_SEARCH_PATHS = (
      "$(inherited)",
      /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
      "$(SRCROOT)/../node_modules/react-native/React/**",
      "$(SRCROOT)/../node_modules/react-native-code-push/ios/CodePush/**",
    );

Вы можете считать, что "наша" — это "ваша команда", а "их" — "команда разработчиков React Native".

Помощник по обновлению

Upgrade Helper — это веб-инструмент, который поможет вам при обновлении ваших приложений, предоставляя полный набор изменений, происходящих между любыми двумя версиями. Он также показывает комментарии к конкретным файлам, чтобы помочь понять, почему эти изменения необходимы.

1. Выберите версии

Сначала необходимо выбрать, с какой версии и до какой версии вы хотите перейти, по умолчанию выбираются последние основные версии. После выбора вы можете нажать кнопку "Показать, как обновить".

💡 Крупные обновления будут отображать раздел "Полезное содержимое" в верхней части со ссылками, которые помогут вам при обновлении.

2. Обновление зависимостей

Первый файл, который отображается — это package.json, хорошо бы обновить зависимости, которые там отображаются. Например, если react-native и react отображаются как изменения, то вы можете установить их в свой проект, выполнив команду yarn add:

1
2
3
# {{VERSION}} and {{REACT_VERSION}} are the release versions showing in the diff
yarn add react-native@{{VERSION}}
yarn add react@{{REACT_VERSION}}

3. Обновите файлы проекта

Новый релиз может содержать обновления других файлов, которые генерируются при запуске npx react-native init, эти файлы перечислены после package.json на странице Upgrade Helper. Если других изменений нет, то вам нужно только пересобрать проект, чтобы продолжить разработку.

Если есть изменения, то вы можете либо обновить их вручную, скопировав и вставив из изменений на странице, либо сделать это с помощью команды обновления React Native CLI, выполнив ее:

1
npx react-native upgrade

Это позволит проверить ваши файлы на соответствие последнему шаблону и выполнить следующее:

  • Если в шаблоне есть новый файл, он создается.
  • Если файл в шаблоне идентичен вашему файлу, он пропускается.
  • Если файл в вашем проекте отличается от файла шаблона, вам будет предложено сохранить свой файл или перезаписать его версией шаблона.

Некоторые обновления не будут выполняться автоматически с помощью React Native CLI и требуют ручной работы, например, с 0.28 до 0.29, или с 0.56 до 0.57. Обязательно проверьте release notes при обновлении, чтобы вы могли определить, какие изменения вручную могут потребоваться вашему конкретному проекту.

Устранение неполадок

Я хочу обновить React Native CLI, но не использую Git.

Хотя ваш проект не обязательно должен работать с системой версий Git — вы можете использовать Mercurial, SVN или вообще ничего — вам все равно потребуется установить Git в вашей системе, чтобы использовать npx react-native upgrade. Git также должен быть доступен в PATH. Если ваш проект не использует Git, инициализируйте его и зафиксируйте:

1
2
3
git init # Initialize a Git repository
git add . # Stage all the current files
git commit -m "Upgrade react-native" # Save the current files in a commit

После завершения обновления вы можете удалить каталог .git.

Я сделал все изменения, но мое приложение по-прежнему использует старую версию.

Подобные ошибки обычно связаны с кэшированием, рекомендуется установить react-native-clean-project, чтобы очистить весь кэш вашего проекта, после чего вы сможете запустить его снова.

Комментарии