13

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

MyApp
  packages
    myapp-core
    myapp-mobile
    myapp-web

lerna bootstrapcoreor似乎没有任何问题web,但是mobile(这是一个 React Native 项目)拒绝找到该myapp-core模块。

npm link我记得在 React Native 中存在一些问题。这是造成问题的原因吗?这个功能最终会存在吗?

4

3 回答 3

8

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

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到 Web 和移动项目中一样。

请注意,该项目没有利用 Lerna 的--independent版本控制系统。

于 2017-01-10T22:02:27.213 回答
2

正如评论中提到的React Native packager 不使用 symlinks。这使得无法使用 Lerna 从同一个 monorepo 创建指向本地子包的符号链接。

幸运的是,有一个支持符号链接的替代打包程序。到目前为止对我来说效果很好https://github.com/callstack-io/haul/

于 2017-08-02T13:48:05.537 回答
0

是的,可以创建一个工作区来在本机和 Web 平台上运行 lerna 并做出反应。

事实上,当您打算在您的应用程序中共享 JS 逻辑时,在 lerna 风格的 monorepo 中拥有一个 Web 移动项目可能是一个不错的选择。

创建以下 monorepo 作为示例:

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

有关更多信息,请查看:

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

于 2017-05-22T11:25:55.327 回答