Использовать 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
воспроизведение:
- клонировать РЕПО и
cd
на npm install
./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