【问题标题】:How to make pod install ignore linked lib internal node_modules in react native?如何让 pod install 在 react native 中忽略链接的 lib 内部 node_modules?
【发布时间】:2022-07-21 09:15:49
【问题描述】:

我正在这里编写一个内部 UI 库。

我正在使用 react-native-builder-bob 并且效果很好,我可以在 example 文件夹/应用程序中测试我的组件并专注于库开发,但是当我将库链接到 my-app (yarn link && cd ../my-app/ && yarn link my-lib)并运行一个 pod install (cd ios && pod install),来自 example 应用程序的依赖项最终在 my-app podfile.lock 中,如下所示:

  EXSplashScreen:
    :path: "../node_modules/my-library/example/node_modules/expo-splash-screen/ios"

我不同意它最终成为直接依赖项。而且我绝对不同意它在启动时破坏我的应用程序(我的应用程序不使用 expo),因为我什至不调用任何 expo 的东西。

那么,我怎样才能确保我可以在两个项目(examplemy-app)中开发和测试东西,而不会相互干扰?

我知道我可以:

  1. 在编写 my-app 代码时删除示例节点模块:但我不想这样做。
  2. yarn pack 打包lib,提取tar 内容并链接它(它不包括示例文件夹)...但这有点奇怪
  3. PodfileRN script忽略示例文件夹..但我不知道怎么做,它适用于android吗?

编辑: 关于选项3,似乎包含子文件夹的脚本是react-native-unimodules cocoapods.rb 之一,它获取所有具有unimodules.json的包

【问题讨论】:

    标签: react-native cocoapods react-native-cli


    【解决方案1】:

    这不是直接依赖。不幸的是,npm link/yarn link 的行为与已发布的包不同。它还用于开发,而不是用于在应用中使用包。

    要获得正确的行为,您需要将包发布到注册表并从那里使用它。发布时未上传示例。

    要在本地测试此行为,您可以:

    • 为本地 NPM 服务器使用类似 https://verdaccio.org/ 的内容
    • 运行npm pack 创建一个tgz 包,您可以使用yarn install /path/to/file 安装它

    【讨论】:

      猜你喜欢
      • 2020-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 2022-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多