使用Lerna和React Native?

时间:2017-01-06 20:53:59

标签: npm react-native lerna

是否可以将Lerna(lernajs.io)与React Native一起使用?我尝试使用以下结构创建新项目:

MyApp
  packages
    myapp-core
    myapp-mobile
    myapp-web

lerna bootstrap似乎与coreweb没有任何问题,但mobile(这是一个React Native项目)拒绝查找{ {1}}模块。

我记得在React Native中myapp-core存在一些问题。是什么导致了这个问题?这个功能最终会存在吗?

3 个答案:

答案 0 :(得分:8)

看起来像react-native: 0.40.0,lerna按预期工作。我创建了一个最小的演示应用程序,它使用shared包为感兴趣的人更改React和React Native应用程序的背景颜色:

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

重现的步骤:

  1. 克隆回购邮件和
  2. 中的cd
  3. npm install
  4. ./node_modules/.bin/lerna bootstrap
  5. 然后你可以运行每个应用程序(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