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

Sur*_*gch 22 dart dart-pub flutter

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

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^0.1.2
  english_words: ^3.1.5
Run Code Online (Sandbox Code Playgroud)

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

笔记

Sur*_*gch 28

脱字符号(^)用于Dart中的发布依赖关系,以指示允许的版本号范围。具体来说,从指定版本到(但不包括)下一个非破坏性版本的任何版本都是可以的。

  • 所以^3.1.5'>=3.1.5 <4.0.0'
  • 并且^1.2.3将与'>=1.2.3 <2.0.0'

它是较长形式的缩写。

^是说,我想自动使用最先进的最新包从酒吧只要该更新我的应用程序不会破坏任何东西。

笔记

澄清低于1.0.0的版本

本来我以为

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

但是,这是对语义版本控制的错误理解。当主版本号为时0(如00.1.2),其含义是该API不稳定,即使是次要版本号的更改(如10.1.2)也可能表示重大更改。

语义版本的文章中指出:

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

并且

我应该如何在0.yz初始开发阶段处理修订?

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

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

  • ^0.1.2 是相同的 '>=0.1.2 <0.2.0'

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

  • @jitsm555,最大版本是最小版本之后的下一个主要版本。如果最小版本是“3.1.5”,则主版本号是“3”。“3”之后的下一个数字是“4”,因此最大版本是“4.0.0”(即小于“4.0.0”的任何内容,但不包括“4.0.0”本身)。 (2认同)

Gün*_*uer 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