【问题标题】:Is it possible to set version constraints for git packages in flutter?是否可以在颤动中为 git 包设置版本约束?
【发布时间】:2020-12-06 11:06:48
【问题描述】:

我们的项目结构如下:

(b5df1cc)
common    -> package1 \
                       \
(56e0bc0)               \
common    -> package2 -----> myApp
                        /
(101aa16)              /
common    -> package3 /

myApp 依赖于package1、pacakge2、package3 和package1、pacakge2、pacakge3 依赖于common 包(git packages2 包),但@98765433 (git 包)可能有不同的提交哈希。运行flutter packages get后,会显示如下错误:

Because every version of package1 from git depends on common from git {url: git@bitbucket.org:common.git, ref: b5df1cc, path: common} and every version of package2 from git depends on common from git {url: git@bitbucket.org:common.git, ref: 56e0bc0, path: common}, package1 from git is incompatible with package2 from git.
So, because myApp depends on both package2 from git and package1 from git, version solving failed.
Running "flutter pub get" in myApp...
pub get failed (1; So, because myApp depends on both package2 from git and package1 from git, version solving failed.)

是否可以设置版本约束或其他方式来忽略 git 包的“版本解决失败”错误?因为我们可以保证common包(git包)中的所有代码都兼容pacakge1,package2,package3,如果可以设置版本约束,比如>=2.0.0 <3.0.0,我们可以让版本永远达不到3.0.0,所以myApp可以兼容package1、pacakge2、package3等。

更新:

使用dependency_override可以解决这个问题,但是dependency_override需要在myApp中设置,更新通用包时,我们需要同时更新myApp中的通用包,说如果我更新package1中的通用包,我也需要更新myApp中的通用包,这不是我的预期。

【问题讨论】:

    标签: flutter dart flutter-dependencies flutter-packages dart-packages


    【解决方案1】:

    可能的解决方法是使用dependency_overrides

    注意:它可能会破坏 package1/2/3,因为它会强制使用它们的某些版本的通用包,而忽略它们的约束

    【讨论】:

    • 是的,确实可以用dependency_override,但是更新common包的时候,我们需要同时更新myApp中的common包,说如果我更新common package1中的包,我也需要更新myApp中的通用包。
    • 无论如何,您的应用目前只使用一个版本的通用包
    • 你应该考虑托管一个私有的 pub.dev 或者使用像 cloudsmith.io 这样的 SaaS
    • @TheVinhLuong 有没有关于托管私人 pub.dev 的指南?
    • @Pavel 是的,你可以在这里查看:github.com/dart-lang/pub-dev/blob/master/doc/development.md
    猜你喜欢
    • 2018-09-22
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 2020-01-31
    • 2019-03-29
    • 2015-11-19
    相关资源
    最近更新 更多