Различные версии пакетов для Android и iOS

Я занимаюсь разработкой приложения для Android и iOS с использованием React Native.

Одна из библиотек, которую я использую, немного проблематична, потому что приложение правильно компилируется:

  • ... на Android при использовании "react-native": "0.42.0",
  • ... на iOS при использовании "react-native": "0.37.0",

(Ни сама библиотека, ни конкретные версии react-native важны для этого обсуждения. Важно то, что мне нужны две разные версии "одновременно" - разные для каждой платформы.)

Я ищу способ иметь единую кодовую базу, которая может компилироваться с использованием соответствующих инструментов для любой платформы без какой-либо модификации 1. Решения, о которых я подумал: (каким-то образом):

  • Укажите разные версии пакетов для каждой мобильной ОС.
  • Иметь совершенно разные package.json файлы для каждой платформы.

Однако я понятия не имею, как можно достичь чего-либо из вышеперечисленного или вообще возможно. Я пытался добавить .ios а также .android как объяснено в документации React-Native по коду для конкретной платформы, но npm не распознает эти файлы.

Итак, мои вопросы:

  1. Возможны ли мои идеи, и если да, то как?
  2. Есть ли другие способы получить желаемый результат?

1 В C-подобном коде это было бы легко с флагами препроцессора.

2 ответа

Вы можете использовать ветки git, чтобы хранить разные версии файла package.json.

Еще не пробовал, но собираюсь. Кто-то предложил мне попробовать это: "объединить псевдонимы npm в package.json наряду с файлами платформы, которые поддерживает Metro (например, Component.ios.js)"

Возможно, что-то вроде...

{
  "package-v1": "http://example.com/package-v1",
  "package-v2": "http://example.com/package-v2",
   // or GitHub based
  "package-v1": "orgname/package#v1",
  "package-v2": "orgname/package#v2",
}

// Component.ios.js
import "package-v1"

// Component.android.js
import "package-v2"
Другие вопросы по тегам