Как получить версию пакета npm из пакета. json в React Native - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть проект React Native с двумя номерами версий. Первый - это тот, который настроен в XCode для версии приложения iOS, а второй - из свойства version в пакете проекта. Файл json. Apple ограничивает формат, который номер версии может принимать только цифрами и двумя точками, однако я использую Semver, а дополнительные поля, которые он предоставляет, полезны для внутренних и предварительных выпусков TestFlight.

XCode marketing версия: 4.0.0
npm Версия Semver: 4.0.0-alpha.2

Я хочу отобразить версию Semver в пользовательском интерфейсе приложения, чтобы сделать ее ясно, какая версия используется, и является ли это предварительным выпуском. Очевидный способ сделать это - импортировать файл пакета. json и получить прямой доступ к свойству version:

import { version } from 'App/package.json'
...
<Text>v{version}</Text>

Однако это работает, когда я собираюсь связать JavaScript для развертывания я обнаружил, что Metro копирует файл пакета. json в папку ios/assets в проекте React Native. Это приводит к сбою сборки XCode с ошибкой:

ошибка: файл /Users/.../main.jsbundle не существует.

Попытка связать JavaScript снова выдает еще одну ошибку:

Loading dependency graph...jest-haste-map: Haste module naming collision: App
  The following files share their name; please adjust your hasteImpl:
    * <rootDir>/App/package.json
    * <rootDir>/ios/assets/App/package.json
...
npm ERR! app@0.0.0 build-ios:prod: `react-native bundle --platform ios --dev false --entry-file index.js --bundle-output ios/main.jsbundle --assets-dest ios`
npm ERR! Exit status 1

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...