如何在本地调试supabase_flutter存储库和其他基于melos的monorepos?

问题描述 投票:0回答:2

我正在尝试在本地调试 supabase_flutter 存储库。它们是软件包中的一些功能,我可以在我正在开发的应用程序中对其进行最佳测试。因此,我尝试使用本地存储库作为我的应用程序的 pubspec.yaml 中的依赖项。

我已经将存储库分叉并克隆到本地计算机,使用 melos 初始化所有内容,并根据 README 将本地包添加为依赖项。

当我尝试检查应用程序中从“supabase_flutter”包中导入的函数时,存储库的相关本地文件将按预期打开。但是当我尝试检查“postgrest”包中的函数时,我只会发送到 .pub-cache 目录中的文件副本。

这意味着,我无法测试对应用程序中“postgrest”包的文件所做的任何更改,因为 .pub-cache 目录中复制的文件不会更新。我只能调试对“supabase_flutter”包所做的更改,例如向

print
函数添加
Supabase.initialize
语句。我最初的目标是在
PostgrestTransformBuilder<T> range(int from, int to, {String? referencedTable})
处调试
packages/postgrest/lib/src/postgrest_transform_builder.dart
函数并在那里添加
print
语句。

我已经尝试了

pub get
pub upgrade
melos bootstrap
的不同组合以及多次删除 .pub-cache 目录。

flutter supabase dart-pub supabase-flutter melos
2个回答
0
投票

这不是 Supabase 特定的问题,而是 Dart 打包系统如何工作的问题。

我会尝试以下方法:

  • 删除 Flutter 应用中的
    pubspec.lock
    文件
  • 在supabase_flutter包中运行
    melos bs
  • 在 Flutter 应用程序中运行
    pub get
  • 在 Flutter 应用程序的
    pubspec.lock
    文件中验证它是否使用本地版本的依赖项。

0
投票

我找到了满足我需求的解决方案/解决方法。根据

supabase_flutter
仓库的 README,将
supabase_flutter
包的本地路径添加到要导入它的项目中就足够了,例如:

  supabase_flutter:
    path: <your-path-to-the-local-supabase-flutter-repo>/packages/supabase_flutter

但是 monorepo 中的其他包仍然从 pub.dev 导入,而不是本地版本。对我来说,解决方案是在所有

pubspec.yaml
包中将所有依赖项从 monorepo 更改为其他包。例如,在本地
pubspec.yaml
包的
supabase_flutter
中:

  supabase:
    path: <your-path-to-the-local-supabase-flutter-repo>/packages/supabase

只有在再次在存储库中运行

melos bs
后,所有包的正确本地版本才会正确导入,然后才能对其功能进行调试。

我不确定我是否误解了 melos 的功能,或者更确切地说是 dart 包装系统本身,也许这是有意的行为。不幸的是,我在

supabase_flutter
存储库的 README 中没有找到此过程的任何线索。

© www.soinside.com 2019 - 2024. All rights reserved.