是否可以将Lerna(lernajs.io)与React Native一起使用?我尝试使用以下结构创建新项目:
MyApp
packages
myapp-core
myapp-mobile
myapp-web
lerna bootstrap
似乎与core
或web
没有任何问题,但mobile
(这是一个React Native项目)拒绝查找{ {1}}模块。
我记得在React Native中myapp-core
存在一些问题。是什么导致了这个问题?这个功能最终会存在吗?
答案 0 :(得分:8)
看起来像react-native: 0.40.0
,lerna按预期工作。我创建了一个最小的演示应用程序,它使用shared
包为感兴趣的人更改React和React Native应用程序的背景颜色:
https://github.com/samcorcos/learna-react-native
重现的步骤:
cd
npm install
./node_modules/.bin/lerna bootstrap
然后你可以运行每个应用程序(npm start
进行反应,react-native run-ios
进行反应本地化)并且您将根据共享仓库的输入看到背景变为红色。添加新软件包时,请务必将新软件包添加到每个相关的package.json
文件中,就像我已将shared
添加到网络和移动项目一样。
请注意,此项目未利用Lerna的--independent
版本控制系统。
答案 1 :(得分:1)
正如评论React Native packager is not working with symlinks中所述。这使得不可能使用Lerna从相同的monorepo创建符号链接到本地子包。
幸运的是,有一个支持符号链接的替代打包器。到目前为止对我来说效果很好https://github.com/callstack-io/haul/
答案 2 :(得分:0)
是的,可以创建一个工作区来运行lerna,并在本机和Web平台上做出反应。
事实上,当你的目标是在你的应用程序中共享JS逻辑时,在lerna风格的monorepo中拥有一个web-mobile项目可能是一个很好的选择。
创建以下monorepo作为示例:
https://github.com/agrcrobles/react-native-web-workspace
有关详细信息,请参阅:
https://blog.hellojs.org/a-cross-platform-app-with-react-in-a-monorepo-9c6aa6aed818