为什么 pubspec 环境 / sdk / 使用“ '>=2.7.0 <3.0.0' ”而不是“ ^2.7.0 ”

Fra*_*cca 3 yaml dart semantic-versioning flutter

诚然,我对semver的理解非常有限

environment:
  sdk: ^2.7.0
Run Code Online (Sandbox Code Playgroud)

相当于这个

environment:
  sdk: '>=2.7.0 <3.0.0'
Run Code Online (Sandbox Code Playgroud)

此格式对于包发布是严格执行的

Package validation found the following error:
* ^ version constraints aren't allowed for SDK constraints since older versions of pub don't support them.
  Expand it manually instead:
  
  environment:
    sdk: ">=2.7.0 <3.0.0"
Sorry, your package is missing a requirement and can't be published yet.

Run Code Online (Sandbox Code Playgroud)

latterflutter 使用in 代替该方法有什么原因吗former

哪个可以说更熟悉和一致

ike*_*fah 6

一些定义:

\n
    \n
  • ^2.7.0Caret syntax
  • \n
  • >=2.7.0 <3.0.0Traditional syntax
  • \n
\n

并根据文档

\n
\n

由于插入符号语法是在 Dart 1.8.3 中引入的,因此它需要 SDK 约束(使用传统语法)以确保旧版本的 pub don\xe2\x80\x99t 尝试处理它。例如:

\n
\n
environment:\n  sdk: \'>=1.8.3 <3.0.0\'\n
Run Code Online (Sandbox Code Playgroud)\n