Различные версии пакетов для 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 В 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"