Flutter的pubspec.yaml中的依赖版本号之前的插入号(^)是什么?

时间:2018-11-30 18:37:30

标签: dart flutter dart-pub

在我的Flutter项目的pubspec.yaml文件中,某些依赖项的版本号之前有一个插入符号(^)。

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^0.1.2
  english_words: ^3.1.5

它的目的是什么?什么意思?

注释

3 个答案:

答案 0 :(得分:15)

Dart中的pub dependencies使用脱字符号(^)表示允许的版本号范围。具体来说,从指定版本到(但不包括)下一个不间断版本的任何版本都是可以的。

  • 所以^3.1.5'>=3.1.5 <4.0.0'一样
  • 并且^1.2.3'>=1.2.3 <2.0.0'

这是较长形式的缩写。

^说,我想自动使用Pub中的最新软件包,只要该更新不会破坏我的应用程序中的任何内容。

注释

对低于​​1.0.0的版本的说明

最初我以为是

  • ^0.1.2'>=0.1.2 <1.0.0' (错误!)

但是,这是对Semantic Versioning的错误理解。当主版本号为0(如0的{​​{1}}时)是指API不稳定,甚至次要版本号也会更改(如{{1} 0.1.2中的}表示重大更改。

Semantic Versioning文章指出:

  

主要版本零(0.y.z)用于初始开发。随时可能发生任何变化。公共API不应被认为是稳定的。

还有

  

我应该如何处理0.y.z初始开发中的修订   阶段?

     

最简单的方法是从以下位置开始您的初始开发版本   0.1.0,然后为每个后续发行版增加次要版本。

因此,以下是更正的形式:

  • 10.1.2

感谢Günter Zöchbauer指出我的错误。

答案 1 :(得分:5)

插入符号^表示指定的版本以及所有相对于指定版本没有重大更改的较新版本。

Dart遵循语义版本控制,并建议将其用于软件包维护者。

语义版本控制定义

  • 对于版本>= 1.0.0,主要版本需要增加才能打破更改。
  • 对于版本< 1.0.0,次要版本需要增加才能打破更改。

^2.4.3的意思是>= 2.4.3 < 3.0.0 ^0.17.19的意思是> 0.17.19 <0.18.0

答案 2 :(得分:1)

这意味着将接受不包含重大更改的任何新版本的依赖项。

dart遵循语义版本控制,并将其用于软件包维护者。

用外行人的术语^ 1.8.1表示> = 1.8.1 <2.0.0