Использовать Lerna с React Native?

можно ли использовать Lerna (лернайс.Ио) С реагировать родной? Я пытаюсь создать новый проект со следующей структурой:

MyApp
  packages
    myapp-core
    myapp-mobile
    myapp-web

lerna bootstrap Кажется, нет никаких проблем с core или web, а mobile (который является родным проектом React) отказывается найти myapp-core модуль.

Я помню, что есть некоторые проблемы с npm link в основном реагируют. В этом причина проблемы? Является ли эта функциональность чем-то, что будет в конце концов существуют?

3 ответов


похоже на react-native: 0.40.0, lerna работает как ожидалось. Я создал минимальное демо-приложение, которое использует shared пакет для изменения цвета фона как реагировать и реагировать родное приложение для тех, кто заинтересован:

https://github.com/samcorcos/learna-react-native

воспроизведение:

  1. клонировать РЕПО и cd на
  2. npm install
  3. ./node_modules/.bin/lerna bootstrap

затем вы можете запустить каждое приложение (npm start для react,react-native run-ios для react native), и вы увидите, что фон изменился на красный на основе ввода из общего РЕПО. При добавлении новых пакетов убедитесь, что вы добавили новый пакет в каждый из соответствующих package.json файлы, так же, как я добавил shared для веб-и мобильных проектов.

обратите внимание, что этот проект не использует--independent системы управления версиями.


Как указано в комментариях React Native packager не работает с символическими ссылками. Что делает невозможным использование Lerna, который создает символические ссылки на локальные подпакеты из того же монорепо.

к счастью, есть альтернативный упаковщик, который поддерживает символические ссылки. Работает хорошо для меня до сих пор https://github.com/callstack-io/haul/


да, можно создать рабочую область для запуска lerna с react в родной и веб-платформе.

на самом деле наличие веб-мобильного проекта в монорепо в стиле lerna может быть отличным выбором, когда вы стремитесь поделиться логикой JS в своем приложении.

создал следующий монорепо в качестве примера:

https://github.com/agrcrobles/react-native-web-workspace

для получения дополнительной информации посмотрите в:

https://blog.hellojs.org/a-cross-platform-app-with-react-in-a-monorepo-9c6aa6aed818