延后2Android

Flutter pubspec.yaml依赖^语法解析

2022-01-15  本文已影响0人  不思进取的码农

在flutter项目中添加依赖项,flutter如何解决安装/获取哪个包,以及如果其中有冲突,它主要如何解决它们。

我们看到 pubspec.yaml 文件中有很多依赖格式,其中之一是:

空的或任何依赖

dependencies:
  pluginA:           // empty version
  pluginB:any        // version with `any` keyword

在这两种情况下,都应用了 pluginA 和 pluginB 的最新版本,但不建议这样做。有很多原因,其中之一是因为包版本没有上限,如果在插件的任何新版本中的变动,那么你得依赖项也必须更新。

范围限制:-

dependencies:
  pluginA: ‘>=5.4.0 <6.0.0’              // range constraint
  pluginA: ‘^5.4.0’                      // with caret syntax

两个语句是相同的,并且将应用位于此范围之间的最新版本。这里插入符号语法(^)添加了从当前版本到下一个非破坏版本(不包括破坏版本)的依赖项。

但是对于预发布版本(具有 0 个主要版本代码的版本被认为是像 0.1.1 这样的预发布版本),插入符和范围限制是不同的:
例如 pluginA: '^0.4.0 和 pluginA: '≥0.4.0 < 1.0.0' 是不一样的
因为带有 0 的主要版本被认为处于初始开发阶段,并且可以在任何次要版本中添加包含重大更改的代码。
更多细节:-[查看这个stackoverflow](https://stackoverflow.com/questions/53563079/what-is-the-caret-sign-before-the-dependency-version-number-in-flutters-pub#:~:text=The caret sign ( ^ ) is,non-breaking version is ok.&text=It's shorthand for the longer form.)

因此,在预发布版本的情况下,flutter 会获取插件的最新补丁版本。
在这种特殊情况下pluginA: '^0.4.0'等于pluginA: '>=0.4.0 < 0.5.0'

简而言之,预发布版本中的克拉语法(^)类似于0.vy,
而在普通版本中它是vxy,其中v是固定版本代码,x并且分别y是动态次要版本和补丁版本。

用例子来说可能更让你明白一些

^2.4.3  等价于 >= 2.4.3 < 3.0.0
^0.17.19 等价于  >= 0.17.19 <0.18.0

注意:- 因为插入符语法是在 Dart 1.8.3 中引入的,所以它需要大于或等于 1.8.3 的 dart 版本。

上一篇下一篇

猜你喜欢

热点阅读