首页 > 解决方案 > 为什么 pubspec 环境/sdk/使用“'>=2.7.0 <3.0.0'”而不是“^2.7.0”

问题描述

我对semver的理解非常有限

environment:
  sdk: ^2.7.0

相当于这个

environment:
  sdk: '>=2.7.0 <3.0.0'

此格式严格执行包发布

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.

有什么理由为什么颤振使用latter代替former方法,

可以说哪个更熟悉和一致

标签: flutterdartyamlsemantic-versioning

解决方案


一些定义:

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

并根据文档

因为插入符语法是在 Dart 1.8.3 中引入的,所以它需要一个 SDK 约束(使用传统语法)来确保旧版本的 pub 不会尝试处理它。例如:

environment:
  sdk: '>=1.8.3 <3.0.0'

推荐阅读