在我的Flutter项目的pubspec.yaml
文件中,某些依赖项的版本号之前有一个插入符号(^
)。
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^0.1.2
english_words: ^3.1.5
它的目的是什么?什么意思?
注释
答案 0 :(得分:15)
Dart中的pub dependencies使用脱字符号(^
)表示允许的版本号范围。具体来说,从指定版本到(但不包括)下一个不间断版本的任何版本都是可以的。
^3.1.5
与'>=3.1.5 <4.0.0'
一样^1.2.3
与'>=1.2.3 <2.0.0'
这是较长形式的缩写。
^
说,我想自动使用Pub中的最新软件包,只要该更新不会破坏我的应用程序中的任何内容。
最初我以为是
^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,然后为每个后续发行版增加次要版本。
因此,以下是更正的形式:
1
与0.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