依赖Flame monorepo主分支pub get报错,path依赖可否被dependency_overrides覆盖?
问题根因
这个报错不是因为dependency_override不支持重写path类型依赖,而是报错发生在pub还未执行依赖重写逻辑的前置校验阶段:
- 你通过git引用的
flame_fire_atlas主分支版本属于开发版本,它的pubspec.yaml中对flame的依赖声明是相对路径../flame - pub拉取git来源的依赖包后,会先校验其内部依赖声明的合法性,此时git拉取的单个包目录下不存在
../flame对应的文件路径,直接校验失败,不会走到后续应用全局dependency_override的步骤
解决方案
方案一(推荐,适配开发场景)
本地完整克隆flame的monorepo仓库,所有相关依赖都通过本地路径引用,完全规避git依赖的路径校验问题,同时也方便你调试修改Flame源码:
dependencies: flutter: sdk: flutter flame: path: 你本地克隆的flame仓库路径/packages/flame flame_fire_atlas: path: 你本地克隆的flame仓库路径/packages/flame_fire_atlas
该方案无需额外配置dependency_overrides,桥接包内的相对路径依赖可以直接匹配到本地的flame核心库。
方案二(无需本地克隆仓库)
如果你不想在本地维护flame的源码,可以依赖官方发布的开发预览版本,直接从pub.dev拉取预构建的版本,不会存在路径依赖问题:
dependencies: flutter: sdk: flutter flame: ^1.18.0-dev.1 # 替换为当前最新的dev版本号 flame_fire_atlas: ^1.5.0-dev.1 # 替换为和flame版本匹配的dev版本号
如果一定要直接使用git主分支的代码,也可以自行fork flame仓库,把所有桥接包pubspec里的path依赖都改成同一个git源的flame依赖,再在你的项目中依赖fork后的仓库地址即可,但该方案维护成本较高,不推荐使用。
内容的提问来源于stack exchange,提问作者spydon
相关产品推荐
相关产品推荐

